Итак, я создаю класс игрового менеджера для Qub3d Engine и хочу, чтобы каждый GameState
был std::unique_ptr
Каждый GameState, такой как mainMenu
, который у меня есть, является дочерним классом GameState
Мне нужно, чтобы std::list(or something)
содержал разные unique_ptr для каждого состояния, например mainMenu
и mainGame
.
Я пробовал std::list< std::unique_ptr<GameState> > stateStack;
, но когда я пытаюсь сделать это: stateStack.push_back(m_mainMenu);
Я получаю сообщение об ошибке C2664 о перегрузке, не включая класс mainMenu. (Не знаю, актуально ли это, но я использую MSVC)
Как бы я этого добился? И возможно ли это вообще?
std::unique_ptr
к базовому классу также может обрабатывать производный класс. Так что сделайтеstd::list
изstd::unique_ptr
базовым классом. - person Dannyu NDos   schedule 05.03.2018std::list<std::unique_ptr<GameState>> states;
? - person Galik   schedule 05.03.2018mainMenu
класс. @DeiDei на данный момент мне все равно, потому что он должен работать независимо от того, какой из них я использую, хотя я, вероятно, буду использовать вектор. - person TMcSquared   schedule 05.03.2018m_mainMenu
? Это должно бытьstd::unique_ptr<GameState>
илиstd::unique_ptr<mainMenu>
. - person Dannyu NDos   schedule 05.03.2018