У меня проблемы с получением класса списка std для вызова соответствующей функции в классе.Он продолжает вызывать только функцию базового класса.Вот что происходит:
У меня есть класс состояний со следующей функцией обновления, которая объявлена виртуальной в заголовке:
Функция обновления State.h:
virtual void update(float elapsed);
СостояниеФункция обновления .cpp:
void State::update(float elapsed){
};
и наследующий от нее класс с именем TestState:
class TestState::public State{
virtual void update(float elapsed){
if (GLOBALENGINE->getInput() -> getKeyPress(DIK_Q)
PostQuitMessage(0);
};
};
Я вызываю функцию addState, чтобы добавить новое состояние в связанный список и сделать еготекущее состояние выглядит следующим образом:
GLOBALENGINE->addState(new TestState,true);
Функция addState выглядит следующим образом:
void GameEngine::addState(State *state, bool change){
states->push_back(*state); //add the test state into the states list
// some irrelevant code
currentState = &(states->back());//currentState is a pointer to a State
// So we make it point to the newly added state.
}
Тогда функция run () вызывается в каждом кадре, а внутри нее находится следующий код:
currentState->update(elapsed)// This should call the update function in TestState!
Я думал, что эта строка должна вызывать функцию обновления в TestState, но вместо этого она вызывает только функцию в классе State (то есть: она ничего не делает).
Может кто-нибудь объяснить, как я могу получить требуемую функциональность?
Спасибо