我有3个课程MovableObject
,FixedObject
和CollisionObject
。 CollisionObject
应该可以是MovableObject
或FixedObject
。但是使用多重继承是没有意义的,因为不能同时使用多重继承。基本上,如果创建Projectile
,则层次结构为:
Sprite <- MovableObject <- CollisionObject <- Projectile
如果我创建一个
Obstacle
,它将是:Sprite <- FixedObject <- CollisionObject <- Obstacle
(我的基类是
Sprite
)因此,
CollisionObject
应继承的内容取决于子对象的继承对象(Movable-
或FixedObject
)。但是如何以一种不错的方式在C ++中实现呢? 最佳答案
如果CollisionObject是一个类,则它将始终从相同的类继承,因此,如果您不想使用多重继承,则无法请求。但是多重继承会使CollisionObject既可移动又可固定,这听起来不太正确。
但是,如果将CollisionObject作为模板,则可以完成以下操作:
template<typename Base> class CollisionObject : public Base
{
...
};
class Projectile : public CollisionObject<MovableObject> {...};
class Obstacle : public CollisionObject<FixedObject> {...};