帮助解决这个问题

时间:2011-07-12 21:52:35

标签: c++

我正在制作一款几乎所有东西都来自实体的游戏。我还为需要渲染的所有实体提供了一个IRenderable接口。

加载关卡时,每个IRenderable实体都放在IRenderable *的矢量中,然后传递给渲染器。

当我实例化任何实体时,我将它添加到实体*的矢量。

我想知道当这个实体发送ENTITY_DESTROYED消息时我该怎么做?

问题是我不知道这个实体是否可以进行IRenderable。我必须尝试为此投射它,我不确定在这里投射是否是一个好主意。

我还能做些什么来避免施法?

由于

另一点要注意,即使我知道它是IRenderable,由于多重继承,指针可能会有所不同。

1 个答案:

答案 0 :(得分:3)

This article是我在这个主题上发现的最好的讨论。我推荐它。

否则,这可能有用。

class IRenderable;

class Entity {
public:
  virtual ~Entity() {}
  virtual IRenderable *getIRenderable() {return 0;}
}

class IRenderable : public Entity {
public:
  virtual IRenderable *getIRenderable() {return this;}
};

我称这个解决方案是一个创可贴。