C++循环引用问题

ope*_*as2 0 c++ destructor class-design circular-dependency forward-declaration

我有2个班级:DataObjectDataElement.DataObject保持指针(只)DataElementS,和一个DataElement包含指向几种类型,其中一个DataObject.

这曾经没有问题,因为我只使用指针DataObject输入DataElement,所以DataObject在标题中的前向声明DataElement就足够了.

但是,现在,我尝试添加一个析构函数DataElement,我需要删除一个DataObject.在这方面,编译器说:

dataelement/destructor.cc: In destructor ‘DataElement::~DataElement()’:
dataelement/destructor.cc:8: warning: possible problem detected in invocation of delete operator:
dataelement/destructor.cc:8: warning: invalid use of incomplete type ‘struct DataObject’
dataelement/dataelement.h:7: warning: forward declaration of ‘struct DataObject’
dataelement/destructor.cc:8: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined.
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?前向声明显然是不够的,而我不能包含完整的标题DataObject,因为这再次给了我循环依赖.

提前致谢!

Jam*_*lis 5

在包含两个标头的.cpp文件中定义析构函数.