p = new int{99} : Visual Studio Fehler, g++ keiner



  • Hey,
    ich lern grad mit nem Kumpel auf die kommende OOP Klausur (Sprache ist C++)
    Nun ist in einer alten Klausur folgende Frage gestellt worden:

    Geben Sie in der Tabelle an was von den drei C++ Anweisungen je erzeugt wird oder ob es einen Syntaxfehler gibt.

    Ein Eintrag in der Tabelle ist dann:

    int* p = new int{99};

    Wir waren uns da nicht sicher und haben einfach mal den Compiler gefragt.

    Problem ist nun aber:
    Unter G++ erzeugt er ein dynamisches Array mit dem einen Eintrag 99.
    Unter Visual Studio bekommen wir eine Fehlermeldung.

    Ist dies nun ein "entgegenkommen" des G++ oder tatsächlich Sprachstandard der von Visual Studio einfach nicht unterstützt wird?!?

    Was wäre eure Antwort auf diese Frage !?

    Gruß MichEben


  • Mod

    int* p = new int{99};
    

    Legal in C++11, dem aktuellen Standard (hat den gleichen Effekt wie:

    int* p = new int(99);
    

    In C++03 ist diese Form nicht zulässig.



  • ok super danke 🙂



  • Das nennt sich Uniform-Initialization, und ist ein C++11-feature.
    Weil G++ es unterstützt, ist es dort akzeptabel. VC++ unterstützt mehrere neue Features noch nicht ( 🙄 ), deswegen produziert das da einen Syntaxfehler.


Anmelden zum Antworten