[英]C++ calling child function from parent class
我是C ++編程的新手,我想學習繼承。 我正在構建一個用於繼承的實踐軟件,我想知道它是否是一個好的設計。 這是我的程序的一部分
enum ObjectType{MovingObj, StaticObj};
class WorldObject{
public:
vector<double> Position;
WorldObject(ObjectType Type);
};
class MovingObject : public WorldObject {
public:
double Speed();
MovingObject(): WorldObject(MovingObj){}
};
class StaticObject: public WorldObject {
public:
MovingObject(): WorldObject(StaticObj){}
};
我有一個像這樣的物體世界
class World{
public:
vector<WorldObject> WorldObjectCollection;
}
我必須遍歷一些代碼,每個循環都需要更新運動對象的速度,並且由於我需要檢查運動對象與靜態對象之間的碰撞,因此最好將所有對象放在同一向量中。
在ObjectType的開關的基礎上將WorldObject靜態廣播到MovingObject的一種好習慣嗎?
有更好的方法嗎? 我應該創建一個虛擬Speed()函數嗎?
謝謝
您將遇到的問題是WorldObjectCollection
向量是基礎對象的向量。 將StaticObject
和MovingObject
放在矢量中將對其進行切片 ,以便僅存儲WorldObject
零件。 因此,您的static_cast
根本無法使用。
一種可行的方法是擁有一個世界vector<WorldObject*>
。 使用枚舉可能有效,但是您建議自己使用多態的方法將更易於操作和維護。 例如,隨着游戲的發展和添加新的對象會容易得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.