Undefined ссылка на статическую переменную
Возможный дубликат:
С++: undefined ссылка на статический член класса
Я использую 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;
}
Ответы
Ответ 1
Вы только объявили 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.
Ответ 2
Вы объявили A::i
внутри своего класса, но вы его не определили. Вы должны добавить определение после class A
class A {
public:
static int i;
...
};
int A::i;