Проблема циклических ссылок C ++
У меня есть 2 класса:DataObject
а такжеDataElement
. DataObject
содержит указатели на (только)DataElement
с иDataElement
содержит указатели на несколько типов, среди которыхDataObject
.
Раньше это не было проблемой, так как я использую только указатели наDataObject
в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
, поскольку это снова дает мне круговую зависимость.
Заранее спасибо!