我正在尝试将对象存储在对象列表(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
保持为空。
想法?
答案 0 :(得分:0)
而不是
gameStates.insert(std::make_pair(name, * state));
我必须使用
gameStates[name] = state;
Noob错误,但至少它现在正在运作。耶。