我正在使用MinGW。为什么静态变量不起作用
[Linker error] undefined reference to `A::i'
#include <windows.h>
class A {
public:
static int i;
static int init(){
i = 1;
}
};
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil){
A::i = 0;
A::init();
return 0;
}
答案 0 :(得分:41)
您只声明A::i
,需要在使用之前定义A::i
。
class A
{
public:
static int i;
static void init(){
i = 1;
}
};
int A::i = 0;
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
A::i = 0;
A::init();
return 0;
}
你的init()函数也应返回一个值或设置为void。
答案 1 :(得分:14)
您已在班级中声明A::i
,但尚未对其进行定义。您必须在class A
class A {
public:
static int i;
...
};
int A::i;