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