Array von Objekten im Constructor initialisieren



  • Gibt es eine Möglichkeit, das folgende zu erreichen ohne am Design der Klasse bar zu schrauben? (Eine Lösung in C++0x wäre auch ok.)

    class bar{
     const int i;
     public: 
      bar(const int init):i(init){}
    }; 
    
    class foo{
      bar feld[2];
     public: 
      foo():feld({2,3}){}  // Fehler: "schlechte Feldinitialisierung"
    }; 
    
    int main(){
     foo X;
     return 0;
    }
    

  • Mod

    C++0x ist schon genau die Antwort. Da geht das mit der Syntax die du hier benutzt.



  • Hast du das wirklich compiliert? Mit welchem Compiler?

    Beim mir:

    $ g++ test.C -std=c++0x
    test.C: In constructor »foo::foo()«:
    test.C:10: Fehler: schlechte Feldinitialisierung
    
    $ g++ --version
    g++ (GCC) 4.4.4
    


  • thomas___ schrieb:

    g++ (GCC) 4.4.4

    Du hast wohl ein veraltetes System.
    Allerdings, bei mir gehts auch nicht ( gcc version 4.5.2 (Debian 4.5.2-7) )

    IMHO bleibt dir nichts anderes übrig, als direkt im Konstruktor zu initialisieren. Performanzmässig dürfte sich da nichts tun, aber blöd ist das schon.

    Eine Lösung würde mich auch interessieren (oder ein Beleg im neuen Standard).


Anmelden zum Antworten