Default Copy Ctor und STL-Container
-
Hallo

Ich hatte immer wieder Probleme mit STL-Containern, wenn ich keine Pointer verwendet habe, Copy-Ctor war keiner definiert.
Wenn mir die Funktionalität des Default-Copy-Ctors (einfach alle member kopieren) reicht, wann muss ich dann einen eigenen Copy-Ctor deklarieren / was muss ich beachten, damit ich am ende nicht eine Queue mit Defaultobjekten habe? Warum kann sowas nicht funktioniert haben?
-
Erstmal benötigst du gar nichts und kannst trotzdem deine Objekte ohne Probleme in STL-Containern abspeichern.
Die Konstruktoren sind egal, die dienen nur der Initialisierung und der Typumwandlung.
Sobald du allerdings (weil dynamischer Speicher, weil dynamische Resourcen, weil anderes) einen Destruktor in deiner Klasse verwendest benötigst du auch einen CopyCTor und einen Op=. (Regel der großen Drei)
Wenn mir die Funktionalität des Default-Copy-Ctors (einfach alle member kopieren) reicht, wann muss ich dann einen eigenen Copy-Ctor deklarieren / was muss ich beachten, damit ich am ende nicht eine Queue mit Defaultobjekten habe?
Nie / Eigentlich nichts.
MfG SideWinder
-
Hm davon wäre ich auch eigentlich ausgegangen. Ich hatte nur immer wieder negative Erfahrungen mit gemacht, daher die Frage
-
darthdespotism schrieb:
...Ich hatte nur immer wieder negative Erfahrungen mit gemacht...

Welche denn ?
Immerhin bin ich auch immer von SideWinders Ansatz ausgegangen ...Gruß,
Simon2.
-
Ach ich hatte halt immer wieder so freundliche sachen wie 50 identische elemente in der list<>, hab das Zeug nur nicht mehr da, da ich ja auf Pointer umgestiegen bin hab ich auch einiges geändert sodass das jetzt nicht mehr nachvollziehbar ist.
-
Hi,
das klingt jetzt aber nicht nach Problemen durch fehlende CopyCtoren, sondern eher nach prinzipielleren Schwierigkeiten.
"Auf Pointer umgestiegen" bedeutet, dass Du jetzt statt der STL-Container mit new/delete und Arrays rumzauberst (oder anders ausgedrückt: Das Rad neu erfindest) ?
Oder packst Du nun Pointer in die STL-Container ?Gruß,
Simon2.