2009-09-20 5 views
2

Mon C++ est un peu rouillé si ...Quel est le problème avec ce code C++?

#include<list> 
typedef list<int> foo; 

qui me donne la oh si gentil message d'erreur:

test.cpp: 2: erreur de syntaxe avant '; » jeton

Que diable puis-je même Google dans ce ...

Répondre

7

Vous attendez que la liste figure dans l'espace de noms global. Mais est défini à l'intérieur de l'espace de noms std. Par conséquent soit vous devez utiliser using namespace std; ou explicitement spécifier l'espace de noms comme std::list; Personnellement, je préfère la deuxième option.

+1

Ne pas oublier la déclaration using: "using std :: list;". Si je référence beaucoup (cout, endl), je vais les amener dans la portée actuelle sans apporter le reste de std – Bill

14

Les noms des C++ bibliothèque standard sont namespace std

#include <list> 
typedef std::list<int> foo; 
5

list<> est dans l'espace de noms STD. Cela devrait fonctionner correctement:

#include<list> 
typedef std::list<int> foo; 
+1

Drat. Trop lent. :( – greyfade

0

Sinon, vous pouvez le faire,

#include<list> 
using namespace std; 
typedef list<int> foo; 

si vous ne voulez pas taper std:: partout.

+0

En fait, je considère ce mauvais conseil (je ne veux pas commencer tout le débat sur le Saint-espace-nom ici, mais je m'en tiens à mon avis quand même.) – sbi

Questions connexes