当我尝试在 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
}
};
在我扯掉头发之前,我们将不胜感激!
谢谢!
最佳答案
string 是 std 命名空间的一部分,因此您必须将其称为 std::string。这同样适用于 map 。
关于c++ - C2146 失踪;在 Visual Studio 2010 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179180/