#include <vector>
enum ListOfGameStates
{
// List of game states
};
class GameState()
{
public:
GameStates(); // Initializes protected (global) variables
virtual ListOfGameStates run() = 0;
protected:
// Heavyweigh resource managers containing all resources and other global vars
}
class GameStateManager()
{
public:
GameStateManager(); // Creates all game states
~GameStateManager(); // Deletes all game states
void run(); // Switches from one state to another state
private:
// A vector of raw pointers to game states. GameState is a base class.
std::vector<GameState*> game_states_container;
}
我希望能够避免使用裸指针,这样我就不用担心异常和清理问题了。是否有一个 简单易懂的解决方案 (我是个真正的愚蠢的青少年),或者说这样做是否值得?谢谢!
GameState
类需要一个virtual
析构函数。 - GalikGameState
拥有一个纯虚函数,这意味着您将只使用子类,并且这些子类将由基类指针通过智能指针进行删除。如果没有虚析构函数的话,这将是未定义的行为。 - Galik