我对C++相对比较陌生,我正在尝试编写一个简单的2D引擎。但是,目前的结构在其他语言(AS3等)中还是有问题的。我有两个类,一个叫DisplayObject,另一个叫DisplayObjectContainer。 DisplayObjectContainer是DisplayObject的子类,但DisplayObject有一个指向DisplayObjectContainer父级的指针作为属性。我无法想出一种方法在他们的文件中正确包含对方。我无法在DisplayObject中转发声明DisplayObjectContainer,因为我需要访问DisplayObject中的DisplayObjectContainer方法。C++循环依赖关系
的DisplayObject:
class DisplayObject
{
public:
DisplayObjectContainer *parent;
...
...this->parent->globalTransform...
...
的DisplayObjectContainer:
class DisplayObjectContainer : public DisplayObject
{
public:
DisplayObjectContainer();
virtual ~DisplayObjectContainer();
protected:
private:
};
任何帮助,将不胜感激。谢谢!
首先,为什么父类知道一个特定的派生类?无论如何,你需要在包含'DisplayObject'的头文件中使用一个前向声明(它只包含一个未被解引用的DisplayObjectContainer *),并将include包含在源文件中(例如'DisplayObject.cpp ')为'DisplayObject'。 –