Problema de referencia circular de C ++

Tengo 2 clases:DataObject yDataElement. DataObject mantiene punteros a (solo)DataElements, y aDataElement contiene punteros a varios tipos, entre los cuales unDataObject.

Esto solía ser un problema, ya que solo uso punteros paraDataObjectpecadoDataElement, entonces una declaración deDataObject en el encabezado deDataElement es suficiente.

Ahora, sin embargo, trato de agregar un destructor aDataElement, en el que necesito una eliminación en unDataObject. Sobre esto, el compilador dice:

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 puedo resolver esto? Aparentemente, una declaración directa no es suficiente, mientras que no puedo incluir el encabezado completo paraDataObject, ya que eso me da una dependencia circular de nuevo.

¡Gracias por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta