我有2个班级:DataObject
和DataElement
。 DataObject
保存(仅)DataElement
的指针,而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.
我该如何解决?一个前向声明显然是不够的,尽管我不能包括
DataObject
的完整头,因为这又给了我一个循环依赖。提前致谢!
最佳答案
在包含两个标头的.cpp文件中定义析构函数。