Arrays als Rückgabewert?
-
Hallo!
Die Frage ist eigendlich ganz simpel: Wie kann ich ein Array als rückgabewert machen? Also sowas wie:class Irgendwas { public: AndereKlasse[] getAndereKlassen(); };Mein Compiler gibt mir nur ein: "Deklaration deklariert nichts"
Danke! Rolf.
-
std::vector oder boost::array
-
Hallo
Du kannst kein array zurückgeben, aber du kannst mit std::vector arbeiten, oder du nimmst struct. Du kannst dein array in ein struct packen und dises zurückgeben. Wo bei ich die std::vector-Lösung eleganter finde.
chrische
-
Danke, ich hab aber noch ne frage zu std::vector:
Wenn ich mit push_back() etwas hinzufüge, wird das dann Kopiert? Also zb so:
EineKlasse dieKlasse; meinVector.push_back( dieKlasse );Wird dann "dieKlasse" Kopiert, oder muss ich die Instanz mit new instanzieren?
-Rolfi
-
Wird kopiert.
-
Hi,
chrische5 schrieb:
Du kannst kein array zurückgeben
ein Zeiger auf das Array kannst du auch noch zurückgeben. Allerdings ist die std::vector Lösung meistens besser, da komfortabler und sicherer.
MfG
GPC
-
Geht ja richtig Flott hier. Hab aber noch ne Frage (Dann is schluss).
Ich hab in meine Klasse nun so (nur das relevante) deklariert:class DieKlasse { vector<AndereKlasse> derVector; };Wann wird der Destruktor von "derVector" aufgerufen? Den dtor von "DieKlasse" habe ich überschrieben.
-Rolfi
-
Rolf Meyer schrieb:
Wann wird der Destruktor von "derVector" aufgerufen?
sobald deine Klasse zerstört wird (also der Dtor aufgerufen wird).
-
Rolf Meyer schrieb:
Wann wird der Destruktor von "derVector" aufgerufen? Den dtor von "DieKlasse" habe ich überschrieben.
-RolfiAm Ende deines Destruktors (egal, ob du den überschrieben hast - der Compiler hängt noch Aufrufe für die Member- und Basisklassen-Destruktoren dort rein).
-
Rolf Meyer schrieb:
class Irgendwas { public: AndereKlasse[] getAndereKlassen(); };[b]Wenn[/b[ das gehen wuerde, waer die Syntax uebrigens so:
AndereKlasse getAndereKlassen()[];