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.


Anmelden zum Antworten