unique_ptr aus 2 listen löschen ?
-
Hallo,
habe ein kleines Problem. Ich habe 2 Listen und muss ein Objekt(std::unique_ptr) aus beiden löschen. Jedoch bekomme ich dann einen Error, da ich das Objekt ja dann "doppel" lösche(lösche bei beiden über remove_if).
Wenn ich das Objekt aus der einen Liste lösche, scheint es in der anderen immer noch den Pointer zu geben. Der wird auch nicht zum nullptr.
Könnt ihr mir da vielleicht helfen ?
Danke im vorraus
MFG playking21
-
unique_ptr bedeutet, dass der Besitzer vom unique_ptr der einzige Besitzer vom Objekt ist. Das heisst weiterhin, dass es keine zwei unique_ptr geben sollte, die auf das gleiche Objekt zeigen.
-
Ja hast Recht, hätte ich auch drauf kommen können.
Aber hast du auch eine Idee wie ich das lösen könnte ? Wenn ich einen shared_ptr benutzen würde, würde er das Objekt ja nicht mitlöschen. Und auch bei einem normalen Pointer würde ich nur den Pointer löschen(Oder ?)
-
std::weak_ptr
-
Wieso müssen beide Listen Besitzer des Objektes sein?
-
playayayay schrieb:
Wenn ich einen shared_ptr benutzen würde, würde er das Objekt ja nicht mitlöschen.
Der Letzte löscht das Objekt. Das ist der Witz an shared_ptr!
-
Das ist ja geil

Stelle ich einfahc auf shared_ptr um. Ein einzelner ist ja dann wie ein unique_ptr. Vielen Dank, dass ihr mir alle geholfen habt !
-
dot schrieb:
Wieso müssen beide Listen Besitzer des Objektes sein?
Ich unterstreiche das hier mal, da der Post ziemlich ignoriert wurde. Du hast vlt. ein Designproblem.
-
[quote="dot"]Wieso müssen beide Listen Besitzer des Objektes sein?[/quote]
Hab es jetzt anders gelöst.