class Command { public: virtual ~Command(); virtual void Execute() = 0; protected: Command(); }; // game programming patterns class Command { public: virtual ~Command() {} virtual void execute() = 0; }; class Command { public: virtual ~Command() {} virtual void execute(GameActor& actor) = 0; }; class Command { public: virtual ~Command() {} virtual void execute() = 0; virtual void undo() = 0; };