Undefined ссылка на статическую переменную - программирование
Подтвердить что ты не робот

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;
}
4b9b3361

Ответ 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;