Problema de referência circular em C ++

Eu tenho 2 aulas:DataObject eDataElement. DataObject mantém ponteiros para (apenas)DataElements e umDataElement contém ponteiros para vários tipos, entre os quais umDataObject.

Isso não costumava ser um problema, pois eu só uso ponteiros paraDataObjectpecadoDataElement, portanto, uma declaração deDataObject no cabeçalho deDataElement basta.

Agora, no entanto, tento adicionar um destruidor aoDataElement, na qual eu preciso excluir em umDataObject. Sobre isso, o compilador diz:

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.

Como posso resolver isso? Uma declaração de encaminhamento aparentemente não é suficiente, embora eu não possa incluir o cabeçalho completo paraDataObject, pois isso me dá uma dependência circular novamente.

Desde já, obrigado!

questionAnswers(1)

yourAnswerToTheQuestion