C++11 Richtige Struktur-Initialisierung

Dass eine Struktur, wie dies in C++11:

struct von
{
    std::string Name;
    unsigned int ID;
    std::vector<std::string> Checks;
};

Sollte es initialisiert werden wie diese:

    von v = {"",0,{}};

Oder so:

    von v = {};

Beide Möglichkeiten scheinen zu funktionieren, aber der compiler warnt vor über -Wmissing-field-Initialisierungen auf die Letztgenannte Beispiel.

Edit: Hier sind meine compiler-Optionen: g++ main.cpp -ansi -Wall -Wextra -Weffc++ -std=c++0x. Ich bin mit g++ (Debian 4.6.2-12) 4.6.2

  • Es gibt keine Initialisierer-Listen in deinem Beispiel, nur eine Liste der Initialisierung. Der beste Weg könnte sein von v{};.
  • von v{}; auch beklagt sich über die fehlende Initialisierungen für die Mitglieder. Es ist ein -Wmissing-field-Initialisierer Warnung.
  • Hm, du hast Recht. Es ist eine Schande, man kann nicht value-initialisiert eine automatische variable... von v{{},0,{}}; ist die nächste beste Sache.
  • Bitte machen Sie Ihre Titel, die die Frage beschreiben.
  • Im Falle von null Argumente, ich persönlich denke, dass die Warnung von -Wmissing-field-initializer übermäßig pedantisch.
  • Vereinbarte, aber nicht nur dann, auch in dem Fall von einem einzigen Wert 0.
  • Ich habe g++ 4.6.2, die keinerlei Unterstützung für C11. Ihr code wird kompiliert ohne Warnung mit g++ -Wall -pedantic --std=c++0x. Was compiler und Optionen für die Befehlszeile verwenden Sie?
  • -Wextra bewirkt es ich glaube
  • Warnung für leere Initialisierungsliste Fall ist ein false positive das Problem wurde behoben.

InformationsquelleAutor 01100110 | 2012-03-04
Schreibe einen Kommentar