C++ C2146缺失;在VisualStudio2010中

C++ C2146缺失;在VisualStudio2010中,c++,visual-studio,C++,Visual Studio,当我尝试在VS2010中编译时,我遇到了以下错误。它还抱怨字符串未定义,这毫无意义,因为我清楚地包含了它。我理解这些错误的含义,但它们似乎没有任何意义: 1>c:\users\jon\documents\visualstudio 2010\projects\project 2\project 2\userfactory.cpp(11):错误C2146:语法错误:缺少“;”在“职业”之前 1> c:\users\jon\documents\visual studio 2010\projects\p

当我尝试在VS2010中编译时,我遇到了以下错误。它还抱怨字符串未定义,这毫无意义,因为我清楚地包含了它。我理解这些错误的含义,但它们似乎没有任何意义:

1>c:\users\jon\documents\visualstudio 2010\projects\project 2\project 2\userfactory.cpp(11):错误C2146:语法错误:缺少“;”在“职业”之前
1> c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(11):错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int
1> c:\users\jon\documents\visual studio 2010\projects\project 2\project 2\userfactory.cpp(11):错误C4430:缺少类型说明符-假定为int。注意:C++不支持默认int

1> c:\users\jon\documents\VisualStudio2010\projects\project 2\project 2\userfactory.cpp(16):错误C2143:语法错误:缺少“;”在“之前,string是std名称空间的一部分,因此必须将其称为std::string。这同样适用于map。

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

这是否应该是std::string profession?这是否应该是std::string profession?或者您可以使用
使用名称空间std
只将
字符串
导入默认名称空间。@Fabian:这很重要。或者您可以使用
使用名称空间std
只将
字符串
导入默认名称空间。@Fabian:这很重要。
#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

}
};