私には2つのクラスがあります:DataObject
とDataElement
。s DataObject
(のみ)へのポインタを保持し、aにはいくつかのタイプへのポインタが含まれます。DataElement
DataElement
DataObject
DataObject
以前は、のsへのポインタのみを使用しているため、これは問題ありませんでした。したがって、のヘッダーでの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
。これにより、循環依存が再び発生します。
前もって感謝します!