簡體   English   中英

C ++從父類調用子函數

[英]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向量是基礎對象的向量。 StaticObjectMovingObject放在矢量中將對其進行切片 ,以便僅存儲WorldObject零件。 因此,您的static_cast根本無法使用。

一種可行的方法是擁有一個世界vector<WorldObject*> 使用枚舉可能有效,但是您建議自己使用多態的方法將更易於操作和維護。 例如,隨着游戲的發展和添加新的對象會容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM