StackOverflow!C++ - 派生类到基类
我来自一个Java的背景饱和并正尝试我的手在C++的第一次。我正在编写一个基类来表示游戏状态(暂停状态,播放状态,菜单状态)。 Engine类将保持对状态对象的引用,即当前游戏状态,然后在游戏循环期间调用该状态的更新,渲染和pollInput函数。
在Java中,我会做这样的:
在我的引擎类,我会要求我目前的状态变量:
State currState = new MainMenuState();
然后,如果我想将当前状态为播放状态,我可能只是这样做:
currState = new PlayState();
现在,所有我必须做,以确保我的引擎调用正确的状态的更新方法是调用当前状态的更新方法,其我可以做,因为PlayState,MainMenuState和所有其他状态扩展了具有更新方法的State类。
public void update()
{
currState.update();
}
我该如何在C++中做这样的事情?我决定将所有派生类定义为State类中的公共内部类(我喜欢整合代码)。 对于我来说,让内部类扩展它们的外部类是不好的做法吗?
我仍然需要保持在我的引擎当前状态的基准,但我只是了解了切割问题与基类这样分配一个派生类:
State currState = new State::MainMenuState();
所以,如果我正确理解,我无法以Java中的方式将派生类分配给C++中的基类对象。 那么,我该如何保留一个可能保存表示所有不同派生类的值的对象呢?
请让我知道如果你需要从我这里了解更多信息。提前致谢!
的std :: shared_ptr的 currState = ...; –
2014-08-31 17:05:30
什么是shared_ptr?对不起,希望你不介意我的提问。我对C++很陌生。使用shared_ptr赋予常规指针有什么好处? – 13rave 2014-08-31 17:10:46