我正在制作一款几乎所有东西都来自实体的游戏。我还为需要渲染的所有实体提供了一个IRenderable接口。
加载关卡时,每个IRenderable实体都放在IRenderable *的矢量中,然后传递给渲染器。
当我实例化任何实体时,我将它添加到实体*的矢量。
我想知道当这个实体发送ENTITY_DESTROYED消息时我该怎么做?
问题是我不知道这个实体是否可以进行IRenderable。我必须尝试为此投射它,我不确定在这里投射是否是一个好主意。
我还能做些什么来避免施法?
由于
另一点要注意,即使我知道它是IRenderable,由于多重继承,指针可能会有所不同。
答案 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;}
};
我称这个解决方案是一个创可贴。