Ich versuche, eine GUI-Bibliothek zu machen. Und ich wünsche die folgende Aussage gültig. Außerdem ist der Benutzer nicht für die Freigabe von Speicher verantwortlich.Wie sicher zu verwenden und löschen für diese Situation
// Create a GUI context
xGUI::xGUI gui(800, 600);
// gui.objects is a std::map<std::string, IWidget *>
gui.objects["btn"] = new xGUI::Button("Close", 50, 50);
gui.objects["btn2"] = gui.objects["btn"]->clone();
// Block end gui will free all the objects.
Wie Sie sehen können, Klon ist hässlich, aber notwendig. (Gibt es eine Lösung?) Aber dieser Klon wird verwenden, um neue Speicher in der Bibliothek zuzuweisen. dann sei frei von dtor von xGUI was ich in Header-Datei geschrieben habe. neu in der Bibliothek und im Hauptprogramm löschen ... Wird es ein Problem sein ??
Verwenden unique_ptr und Shared_ptr –
„hässlich, aber benötigt“ Warum? Wozu? 'gui.objects [" btn2 "] = gui.objects [" btn2 "] -> clone();' Dieser Aufruf sieht seltsam aus. Warum würden Sie ein Objekt durch seinen Klon ersetzen? –
Sorry für diesen Tippfehler. gui.objects ["btn2"] = gui.objects ["btn"] -> clone() –