2010-11-14 5 views
0

Je reçois les erreurs suivantes lorsque j'essaie de compiler dans VS 2010. Il se plaint également que la chaîne est indéfinie, ce qui n'a aucun sens, car je l'ai clairement inclus. Je comprends ce que les erreurs signifient, mais ils ne semblent pas avoir de sens:C2146 Manquant; dans Visual Studio 2010

1>c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(11): error C2146: syntax error : missing ';' before identifier 'profession' 1>c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(11): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(11): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(16): error C2143: syntax error : missing ';' before '<' 1>c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(16): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(16): error C2238: unexpected token(s) preceding ';' 1>c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(23): error C2061: syntax error : identifier 'string' 1>c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(19): error C2061: syntax error : identifier 'map'

Ceci est mon code:

#include "objbase.h" //I found this recommendation while googling, but had the errors prior to adding this. 
#include <string> 
#include <map> 
#include <utility> 

class UserFactory { 
public: 
    class User { 
     char gender; 
     int id; 
    string profession;// line 11 
    int zip; 
    friend class UserFactory; 
}; 
private: 
map<int,User*>* map; 

public: 
UserFactory() : map(new map<int,User*>()) { } 

virtual ~UserFactory(void); 

void process(string s) { 
    //user id | age | gender | occupation | zip code 

} 
}; 

Toute aide serait appréciée avant de déchirer mes cheveux !

Merci!

+0

ne devrait-il pas être std :: string profession? – Bart

Répondre

5

chaîne fait partie de l'espace de noms std, vous devez donc vous y référer en tant que std :: string. La même chose s'applique à la carte.

+0

Ou vous pouvez utiliser 'using namespace std;'. –

+1

ou 'en utilisant std :: string;' pour importer uniquement 'string' dans l'espace de noms par défaut. – ThiefMaster

+8

@Fabian: C'est quelque chose [je conseillerais contre] (http://stackoverflow.com/questions/2879555/2880136#2880136). – sbi