objekt-array - konstruktor
-
Ich möchte grob gesagt verschiedene Objekte in einem Array speichern, jedoch soll jedes dieser Objekte mit eigenen Parametern [-> Konstruktor] initialisiert werden.
Wie kann ich also bei der Erzeugung eines Array von Objekten variable Daten an den Konstruktor der entsprechenden Klasse übergeben?Nachfolgend eine kurze Code-Skizze:
class dummy { int nope; dummy(int moep) : nope(moep) {} } dummy obj_array[100](integer)(integer)
mfg Thomas
-
Schau dir mal generate bzw. generate_n an.
-
thomekk schrieb:
Ich möchte grob gesagt verschiedene Objekte in einem Array speichern, jedoch soll jedes dieser Objekte mit eigenen Parametern [-> Konstruktor] initialisiert werden.
Wie kann ich also bei der Erzeugung eines Array von Objekten variable Daten an den Konstruktor der entsprechenden Klasse übergeben?Nachfolgend eine kurze Code-Skizze:
class dummy { int nope; dummy(int moep) : nope(moep) {} } dummy obj_array[100](integer)(integer)
mfg Thomas
class dummy { int nope; public: dummy(int moep) : nope(moep) {} }; int main() { dummy obj_array[10] = {1,2,3,4,5,6,7,8,9,0}; }So werden z.B. 10 dummy-Objekte angelegt - int nope wird in der Reihenfolge, wie innerhalb der geschweiften Klammern
vorgegeben, initialisiet {1,2,...}
-
class dummy { int nope; public: dummy(int moep) : nope(moep) {} }; int main() { dummy obj_array[10] = {1,2,3,4,5,6,7,8,9,0}; }Danke
, und wie funktioniert das ganze weiterführend mit mehreren Parameteren alaclass dummy { int nope; std::string moo; public: dummy(int moep, std::string moo) : nope(moep), moo(moo) {} }; ...
-
Initialisierung nicht zusammengesetzter Typen mit Initialisierungsliste ist nicht möglich!

-
Danke balduin für den Hinweis.
Gibt es keine andersweitige saubere Möglichkeit der Lösung meines Problems. Ich möchte nicht unbedingt mit Schleifen arbeiten, in welchen die entsprechenden Objekte erstellt werden. Unschön und durchaus unflexibel.
Thomas
-
-
Eigentlich wollte ich das ganze - wie schon gesagt - so simpel wie möglich gestalten. daher scheiden boost::assign und die generate-Funktionen erstmal aus.
Nach weiteren Überlegungen habe ich mich nun für einen solchen Ansatz entschieden - bei entsprechender Formatierung im Quelltext für meine Zwecke in Ordnung.
dummy obj_array[2] = {dummy(1, "mooo"), dummy(713, "dump")};Noch eine Frage zum Verständnis: Die dummy's in den geschweiften Klammern sind nur temporärer Natur und werden als Kopie an die neu generierten Objekte in obj_array übergeben, oder? D.h. der belegte Speicher ist anschließend wieder verfügbar?
-
thomekk schrieb:
Eigentlich wollte ich das ganze - wie schon gesagt - so simpel wie möglich gestalten. daher scheiden boost::assign und die generate-Funktionen erstmal aus.
?!
-
“Any programmer can write code the machine understands.
Good programmers write code people understand.”Dieses Zitat aus deiner Signatur trifft's auf den Punkt. Ich für meinen Teil finde beide Lösungen kompilzierter zu überblicken, als die "hauseigene" Möglicheit aus meinem vorherigen Beitrag.
Thomas
-
...was daran liegen wird, dass du damit noch nicht gearbeitet hast, weil dann wird das doch schon wieder simpler...
Mfg Ominion