C ++ Zirkelreferenz Problem

Ich habe 2 Klassen:DataObject undDataElement. DataObject enthält Zeiger auf (nur)DataElements und einDataElement enthält Zeiger auf verschiedene Typen, darunter einDataObject.

Dies war früher kein Problem, da ich nur Zeiger auf @ benutDataObjects 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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage