我有3个课程MovableObjectFixedObjectCollisionObjectCollisionObject应该可以是MovableObjectFixedObject。但是使用多重继承是没有意义的,因为不能同时使用多重继承。基本上,如果创建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> {...};

10-04 23:16