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

Can't access static member function C++

本文关键字:函数 C++ 静态成员 访问      更新时间:2023-10-16

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

// a.h
class a {
    public:
        static map<string, int>m;
    a() {
    }
    ~a() {
    }
};
// a.cpp
    a::m['ADD']=1;

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

您需要定义地图,然后才能使用它:

std::map<std::string, int> a::m = std::map<std::string, int>{{"ADD", 1}};

这将把它初始化为包含一个具有关键字std::string("ADD")和值1的元素的映射。

另外请注意,字符串文字使用双引号。

编译器错误:您使用的是单引号,而您可能打算使用双引号。

链接器错误:定义类的静态变量时,还必须在某个cpp文件中定义它们。将以下行添加到您的cpp文件中:

map<string, int> a::m;