struct aggregate initialization und default values



  • Hallo an alle,

    struct foo
    {
        string s = "Hallo Welt";
        int i = 42;
        double d = 3.1415;
    };
    

    Ich möchte einfache Datenstrukturen (siehe obiges Beispiel) verwenden und mir das Schreiben der verschiedenen Konstruktoren usw. sparen und aggregate initialization nutzen.
    Jedoch soll die Datenstruktur bei Defaultinitialisierung bestimmte Werte haben.

    Funktioniert das irgendwie ( obiges Beispiel kompiliert nicht, wenn ich versuche es wie folgt zu verwenden)

    foo f; // noch ok
    foo f2{"Hallo Compiler",12,0.5}; // Error
    

    MfG

    Hlymur



  • EDIT:
    Ich meine natürlich defaultconstruction



  • 1. Welcher Fehler?
    2. Hast du C++11 (bzw. C++14) bei deinem Compiler aktiviert?

    unter C++14 läuft es: http://ideone.com/1BUGLG



  • Habe es jetzt mit dem visual studio compiler probiert und da funktioniert es. Hatte vorhin gcc mit -std=c++11 und da meinte er, dass kein passender Konstruktor gefunden wurde. Ich muss dazu aber sagen, dass ich mit dem gcc nicht sehr vertraut bin, also evtl. irgendwelche Parameter nicht richtig gesetzt habe.

    Danke für die Hilfe 🙂



  • Hlymur schrieb:

    Hatte vorhin gcc mit -std=c++11 und da meinte er, dass kein passender Konstruktor gefunden wurde.

    Das es nicht funktioniert liegt daran, dass foo in C++11 kein "aggregate" ist.
    Kannst ja selber forschen, warum C++11 expizit sagt

    8.5.1/1 Aggregates schrieb:

    An aggregate is an array or a class (Clause 9) with no user-provided constructors (12.1), no brace-or-equal-initializers for non-static data members (9.2)[...]

    Und das in C++14 geändert wurde.


Log in to reply