URL: https://linuxfr.org/forums/programmation-c/posts/initialisateurs-nommes Title: Initialisateurs nommés Authors: Anthony Jaguenaud Date: 2012年02月08日T14:30:32+01:00 Tags: Score: -1 Bonjour, j’essaye d’utiliser les initialisateurs nommés en C++, mais ça ne semble pas fonctionner. Voici un squelette de code ainsi que les erreurs de compilation de mon gcc-4.4.5 test.h ```c++ namespace Name{ class Classe { public: struct myStruct { int a; struct { int b; int a; } sousStruct; }; private: Classe(); ~Classe(); static Classe instance; static const myStruct defaultValue; myStruct value; public: static Classe * getInstance(); }; }; ``` test.cpp (Attention, le « #else » n’est pas pris en compte par l’analyseur syntaxique) ```c++ #include "test.h" #if 0 const Name::Classe::myStruct defaultValue = { 3, {5, 3}}; #else const Name::Classe::myStruct defaultValue = { .a = 3, .sousStruct = { .b = 5, .a = 3, }, }; #endif Name::Classe::Classe() { value = defaultValue; } Name::Classe::~Classe() { } Name::Classe *Name::Classe::getInstance() { return &instance; } ``` Lorsque je compile avec #if 1, aucun soucis, c’est l’ancienne forme d’initialisation des structure. Mais si je bascule sur #if 0 j’obtiens : ```bash $ g++ -c test.cpp test.cpp:9: erreur: expected primary-expression before '.' token test.cpp:10: erreur: expected primary-expression before '.' token test.cpp:11: erreur: expected primary-expression before '.' token test.cpp:12: erreur: expected primary-expression before '.' token test.cpp:13: attention : extended initializer lists only available with -std=c++0x or -std=gnu++0x capello@lestat[RW] ~/tmp $ g++ -c test.cpp -std=c++0x test.cpp:9: erreur: expected primary-expression before '.' token test.cpp:10: erreur: expected primary-expression before '.' token test.cpp:11: erreur: expected primary-expression before '.' token test.cpp:12: erreur: expected primary-expression before '.' token capello@lestat[RW] ~/tmp $ ```

AltStyle によって変換されたページ (->オリジナル) /