C2146失踪; 在Visual Studio 2010中

jon*_*jon 0 c++ visual-studio

当我尝试在VS 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'

这是我的代码:

#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

}
};
Run Code Online (Sandbox Code Playgroud)

在撕开我的头发之前,任何帮助都会受到赞赏!

谢谢!

Mat*_*gro 5

string是std命名空间的一部分,因此必须将其称为std :: string.这同样适用于地图.

  • @Fabian:这是[我建议反对](http://stackoverflow.com/questions/2879555/2880136#2880136). (8认同)