此代碼是否合法?傳遞對象指針作爲指向基類的指針
它崩潰了,我不確定是因爲我的編程環境(它是嵌入式設備),還是因爲我編寫了不友好的代碼。
int foo(NGKGame * game) {
game->init(); //Crashes here
return 0;
}
int main() {
NGKGame * game = new PlaneGame();
game->init(); //This call is okay
foo(game);
return 0;
}
NGKGame
是基類。 PlaneGame
是從NGKGame
派生的類。 init()
是基類中的純虛函數,但在PlaneGame
中實現。
感謝,
編輯:
被調用兩次初始化函數僅僅是作爲示例。在我目前的實施中,它是空的。
你能否在兩種情況下檢查'game'和'init'的地址?他們是一樣的嗎? – fogbit