class StrategyInfo { public: virtual Move getMove(GameState state); private: };
getMove is declared virtual so that it can be polymorphically overridden by the IntermediateStrategyInfo class.