2009-12-08 2 views
3

En utilisant cette initialisation membre ...compilateur GCC Avertissement: Les listes de initialiseur étendue disponible uniquement avec C++ 0x

StatsScreen::StatsScreen(GameState::State level) 
    : m_Level(level) { 
    ...// 
} 

Je reçois l'avertissement suivant ...

extended initializer lists only available with -std=c++0x or -std=gnu++0x

Toute information concernant cet avertissement? Edit: L'avertissement est parti après avoir supprimé l'un des membres affectés à une valeur dans le constructeur (cela n'a pas pu être fait via l'initialisation des membres) et en a fait une variable locale au lieu d'un membre de classe. Je veux toujours savoir ce que ces avertissements signifient cependant.

+0

Est-ce l'objet GameState :: State a un constructeur de copie? Ou peut-être m_Level n'est pas exactement le même type que GameState :: State. –

Répondre

12

Je pense que vous initialisez l'objet avec {...} au lieu de (...):

StatsScreen ss{...}; // only available in C++0x 
StatsScreen ss(...); // OK in C++98 

Pour compiler votre code sous forme de code C++ 0x, ajoutez simplement le drapeau suivant lors de la compilation:

g++ test.cpp -std=c++0x 
+0

L'un des membres du constructeur a été initialisé de cette façon (mais il ne figurait pas dans la liste d'initialisation des membres) et c'est celui que j'ai supprimé, donc cela a du sens. – Anonymous

Questions connexes