我無法讓std list類在類上調用正確的函數。它只會調用基類的函數。這裏發生的事情:在C++中繼承問題
我有被聲明在標題虛擬以下更新功能的狀態類:
State.h更新功能:
virtual void update(float elapsed);
State.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!
I th應該該行應該調用TestState中的更新函數,而是隻調用State類中的函數(即:它什麼都不做)。
有人可以解釋我如何獲得我正在尋找的功能嗎?
感謝
如何聲明'states'列表? – ibid