void ChangeState(int newState)
{
nextState = newState;
//Change the state
switch(nextState) ///the change still will have a case for everything
{
case STATE_INTRO:
{
vec.pop_back();
state ptr(new CIntroState);
vec.push_back(ptr);
break;
}
case STATE_MENU:
{
vec.pop_back();
state ptr(new CMainMState);
vec.push_back(ptr);
break;
}
}
}
У меня есть эта функция, которая позволяет мне изменить текущее состояние; однако я подумал об этом, и к тому времени, когда я закончу, это станет огромным заявлением о переключении. В настоящее время в нем уже имеется около 10 состояний, это всего лишь пример кода. Я пытаюсь сделать что-то немного другое, но я не уверен, как это сделать.Создание нового объекта с параметром
void ChangeState(something)
{
vec.pop_back();
state ptr(new something);
vec.push_back(ptr)
}
Если бы я мог привести его таким образом, я мог бы полностью избежать использования оператора switch и получить тот же конечный результат. Кто-нибудь знает, как это сделать? Любая помощь будет принята с благодарностью.
Похоже, вы хотите шаблонов , – GManNickG
Что отличает каждое состояние? Возможно, вам просто нужен класс 'State' с членами данных, которые описывают эти различия, а не отдельный класс для каждого состояния. –
Что-то известно о чем-то. Если вы даете каждому государству «что-то» своего собственного типа. вы могли бы знать тип во время компиляции. Или это можно узнать только во время выполнения? – AxelOmega