Problema de referencia circular de C ++
Tengo 2 clases:DataObject
yDataElement
. DataObject
mantiene punteros a (solo)DataElement
s, y aDataElement
contiene punteros a varios tipos, entre los cuales unDataObject
.
Esto solía ser un problema, ya que solo uso punteros paraDataObject
pecadoDataElement
, 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!