无法访问静态成员函数C ++

时间:2013-11-19 18:21:03

标签: c++

我有一个类型为map的静态成员。但每当我尝试访问它时,我总是会收到错误。例如

// a.h
class a {
    public:
        static map<string, int>m;
    a() {
    }
    ~a() {
    }
};

// a.cpp
    a::m['ADD']=1;

这是我得到的错误=“数组大小有非整数类型'const char [4]” 我在链接器中也遇到了一个奇怪的错误。

2 个答案:

答案 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;