我有一个类型为map的静态成员。但每当我尝试访问它时,我总是会收到错误。例如
// a.h
class a {
public:
static map<string, int>m;
a() {
}
~a() {
}
};
// a.cpp
a::m['ADD']=1;
这是我得到的错误=“数组大小有非整数类型'const char [4]” 我在链接器中也遇到了一个奇怪的错误。
答案 0 :(得分:4)
您需要定义地图才能使用它:
std::map<std::string, int> a::m = std::map<std::string, int>{{"ADD", 1}};
这会将其初始化为包含一个元素的地图,其中包含键std::string("ADD")
和值1
。
另请注意,对字符串文字使用双引号。
答案 1 :(得分:0)
编译器错误:您可能在使用双引号时使用单引号。
链接器错误:定义类的静态变量时,还必须在某个cpp文件中定义它们。将以下行添加到cpp文件中:
map<string, int> a::m;