#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
. - person Galik   schedule 01.02.2015GameState
имеет чисто виртуальную функцию, что означает, что вы будете использовать только подклассы, и эти подклассы будут удалены (умным указателем) из базового указателя. Без виртуального dtor это поведение undefined. - person Galik   schedule 01.02.2015