Problema de referência circular em C ++
Eu tenho 2 aulas:DataObject
eDataElement
. DataObject
mantém ponteiros para (apenas)DataElement
s 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 paraDataObject
pecadoDataElement
, 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!