尝试初始化静态方法"method is private within this context"出错

error "method is private within this context" trying to initialize static method

本文关键字:within this context 出错 private method 初始化 静态方法 is      更新时间:2024-04-28

我有这个类(在头文件中声明(:

class HttpError
{
static std::map<unsigned long, const char *> statusCodes;
std::string msg;
public:
HttpError();
};

我已经把它放在相应的*.cpp文件中:

HttpError::statusCodes =  {
{100L, "Continue" },
{101L, "Switching Protocols" }}

当我编译时,我得到了错误";statusCode在此上下文中是私有的";。是的,我知道它是私有的,但它应该如何初始化静态私有成员??

我读过这里和这里的答案,我谦虚地认为我也有同样的答案,但毫无疑问是行不通的。我做错了什么?

我忘记声明正在初始化的变量的类型,即:

std::map<unsigned long, const char *>  HttpError::statusCodes =  {
{100L, "Continue" },
{101L, "Switching Protocols" }}; 

当我这么做的时候,错误就解决了。