C ++ Zirkelreferenz Problem
Ich habe 2 Klassen:DataObject
undDataElement
. DataObject
enthält Zeiger auf (nur)DataElement
s und einDataElement
enthält Zeiger auf verschiedene Typen, darunter einDataObject
.
Dies war früher kein Problem, da ich nur Zeiger auf @ benutDataObject
s inDataElement
, also eine Vorwärtsdeklaration vonDataObject
in der Kopfzeile vonDataElement
reicht
Jetzt versuche ich jedoch, @ einen Destruktor hinzuzufügDataElement
, in dem ich ein Löschen auf einem @ braucDataObject
. Dazu sagt der Compiler:
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.
Wie kann ich das lösen? Eine Forward-Deklaration reicht anscheinend nicht aus, während ich den kompletten Header für @ nicht einfügen kaDataObject
, da gibt mir das wieder eine zirkuläre Abhängigkeit.
Danke im Voraus