无法在地图中访问/存储游戏状态对象

时间:2018-01-18 13:03:12

标签: c++ state-machine stdmap

我正在尝试将对象存储在对象列表(map)中,使用字符串作为键,将对象作为值。

'0 * 8 9'

然后我尝试从列表中读取一个对象并存储它:

void GameStateManager::AddGameState(std::string name, GameState * state)
{
    gameStates.insert(std::make_pair(name, * state));
}

std::map<std::string, GameState> gameStates{};

然后我继续运行:

void GameStateManager::SetNext(std::string name)
{
    if (gameStates.count(name))
    {
        nextState = gameStates[name];
    }
}

void GameStateManager::SwitchState()
{
    currentState = nextState;
}

gameStateManager.SetNext("MainMenu");
gameStateManager.SwitchState();

我认为将currentState.HandleInput(); currentState.Update(); currentState.Draw(); 对象存储在地图中存在问题。 调用上述函数时,实际执行的函数(例如,GameState)永远不会执行,因此我认为MainMenuState.Draw()currentState保持为空。

想法?

1 个答案:

答案 0 :(得分:0)

而不是

gameStates.insert(std::make_pair(name, * state));

我必须使用

gameStates[name] = state;

Noob错误,但至少它现在正在运作。耶。