报错截图如下:
报错代码如下:
class Singleton {
public:
static Singleton* GetInstance()
{
if (instance == nullptr)
{ instance = new Singleton(); }
return instance;
}
int static test()//报错源,静态成员函数访问静态数据成员
{
return i;
}
private:
static Singleton* instance;
static int i;
int j;
Singleton() {}
};
报错原因在于:
静态成员函数访问未初始化的静态数据成员。
纠正如下:
在类定义的外部下方,初始化类静态数据成员。
//类内部
private:
static Singleton* instance;
static int i;
int j;
Singleton() {}
};
//类外部下方,放在上方会报错,因为类还未定义
int Singleton::i = 100;