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