此代码是否合法?传递对象指针作为指向基类的指针
它崩溃了,我不确定是因为我的编程环境(它是嵌入式设备),还是因为我编写了不友好的代码。
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