C ++从父类调用子函数

时间:2014-10-15 20:03:42

标签: c++

我是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;
}

我必须遍历一些代码和每个循环,我需要更新移动对象的速度,因为我需要检查移动对象和静态对象之间的碰撞,我最好将所有对象放在同一个向量中。 / p>

这是一个很好的做法,可以在ObjectType的开关上将WorldObject静态广播到MovingObject吗?

有没有更好的方法呢?我应该创建一个虚拟的Speed()函数吗?

由于

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您的WorldObjectCollection向量是基础对象的向量。将StaticObjectMovingObject放在向量中slice,以便只存储WorldObject部分。所以你的static_cast根本不起作用。

一种可行的方法是拥有一个世界vector<WorldObject*>。使用枚举可以起作用,但是你自己建议的多态性方法会更容易操作和维护。例如,随着rgame的增长和发展,添加新类型的对象会容易得多。