Vectoren in Klassen



  • Warum kann ich in einer Klasse nicht std::vector<Irgendwas*> Name(12); schreiben, ohne das VC++ einen Syntaxfehler: constant findet?



  • Das geht in einer Klassendefinition nicht. Das machst du am Besten in der Elementinitialisierungsliste des Konstruktors:

    class Foo {
      vector<Bar*> v;
    public:
      Foo () : v(12) {} //hier gehört das hin.
    };
    //allerdings
    class Foo {
       static vector<Bar*> v; //wenn static, dann ...
    };
    
    vector<Bar*>
    Foo::v (12); // ... ab in die nächste übersetzungseinheit damit.
    

    Achtung: Bei mehreren Elementvariablen die richtige Reihenfolge der Initialisierung in der Elementinitialisierungsliste beachten (Deklarationsreihenfolge)



  • Ichie schrieb:

    Warum kann ich in einer Klasse nicht std::vector<Irgendwas*> Name(12); schreiben, ohne das VC++ einen Syntaxfehler: constant findet?

    Du kannst innerhalb der Klasse die Member nur deklarieren. Erstellt werden die
    Member erst, wenn eine Instanz der Klasse erzeugt wird. Du musst das also im
    CTor der Klasse machen.

    mfg
    v R


Log in to reply