Deshalb möchte ich dies im Wesentlichen tun:Wie kann ich eine Klasse von sich selbst halten, indem ich STL-Container/Smart Pointer verwende?
struct A {
A *children[10];
};
Allerdings, wenn ich dies tun und eine destructor schaffen wie:
virtual ~A() {
for (A *child: children) {
delete child;
}
}
ich einen Segmentation Fault bekommen, und ich bin mir nicht sicher, warum. Wie kann ich erreichen, eine Liste von A innerhalb von A zu halten, indem ich eine STL-Klasse verwende, damit ich mich nicht um neue/löschen kümmern muss? Ich habe versucht, Vektor und erhalten einen "unvollständigen Typ" Fehler.
Haben Sie 'std :: vector ' versucht? Ich nehme nicht an, dass 'A' sich jemals selbst enthält? Ich rate nur hier, weil es hier nicht genug Informationen gibt, um etwas damit zu tun. Denken Sie daran, Ihre Frage so zu bearbeiten, dass sie ein [mcve] enthält, das für Ihr Beispiel nicht länger als etwa 20 Zeilen sein sollte. – Tas
In 'C++ 17' können Sie' struct A {std :: vector children schreiben; } '; ohne diese Sorgen von unvollständigen Typen. Dies ist möglicherweise nicht sofort hilfreich, aber wenn Ihr System es zulässt, würde ein Upgrade auf den neuesten Standard helfen :) – HeroicKatora
In dem hier gezeigten Code wurden die Zeiger nicht initialisiert, so dass jede dieser Löschungen undefiniertes Verhalten erzeugt. –