Array in Konstruktor initialisieren
-
Ich habe in meiner Klasse eine Eigenschaft als Feld definiert.
Gibt es eine Möglichkeit dieses Feld im Konstruktor per feld = {0,1,32,132,887} zu initialisieren? Bei mir meckert der Compiler.
Lokale Variablen kann man ja so initialisieren.
-
das geht nur mit c-arrays und auch nur bei globalen, lokalen oder klassen-variablen. bei objekt-variablen mußt du "zu fuß" initialisieren.
außerdem muß diese initialisierung in der variablen-deklaration (genauer: definition) stehen und die initialisierungsliste darf nur konstanten enthalten.
-
Konfusius schrieb:
die initialisierungsliste darf nur konstanten enthalten.
Echt? Ist die Initialisierungsliste nicht das mit ctor() : ->hier<- {}?? Dort kann man doch auch nicht konstante Elemente hinschreiben, odeR?
mfg.
-
Anfänger06 schrieb:
Gibt es eine Möglichkeit dieses Feld im Konstruktor per feld = {0,1,32,132,887} zu initialisieren? Bei mir meckert der Compiler.
Indirekt schon:
class Foo { private: static int feld_initializer[]; int feld[5]; public: Foo(); }; // foo.cpp: int Foo::feld_initializer[] = { 0, 1, 3, 132, 887 }; Foo::Foo() { for (unsigned i = 0; i < 5; ++i) feld[i] = feld_initializer[i]; }
Direkt gehts leider nicht.