0 oder 1 Objekt speichern
-
ich habe eine Klasse, die keine oder 1 Instanz der gleiche Klasse (und auch einer anderen) speichern soll. Pointer geht nicht, da Kopierfunktion bei der Zuweisung zu aufwendig wäre.
Als ich nicht sicher war, dass es max. 1 Instanz ist, habe ich eine std::list<object> genommen. Funkioniert auch.
Aber ich brauch ja nur max. 1 Instanz.
Ist es sinnvoll da was zu ändern? Wie kann ich das hinbekommen?
-
Oder selber machen, indem du einen Smart-Pointer dafür baust. Dürfte eigentlich keine grosse Sache sein. Eine Art von Scoped Pointer, welcher bei einer Kopie, das Objekt kopiert, auf welches er zeigt.
Grüssli
-
Ich verstehe nicht was gegen einen Pointer spricht??
MeinObjekt *mo = 0; if(bedingung) { mo = new MeinObjekt; } // ... bool save(MeinObjekt *mooooo) { if(!mo) return; else // ... *mo; // << dereferenzieren und serialisieren wo ist das Problem? }
-
Problem ist das Freigeben von dem Ding. Die Datenstruktur ist recht komplex. Zum Teil habe ich die Elemente in einer Liste aber max 1 davon ist außerhalb.
Wenn man mit Objekten hantiert, brauch man sich keine Gedanken mehr um die Freigabe zu machen. Wenn mein Objekt freigegeben wird, wird auch die Liste darin freigegeben und damit alle Elemente darin und deren Listen usw.
Wenn ich Pointer mache, dann muss ich mir auch noch gedanken um Zuweisungsoperatoren, Destruktoren usw. machen. Nicht ganz optimal.