Référence non définie à la variable statique

Dupliquer possible:
C ++: référence indéfinie au membre de classe statique

J’utilise MinGW. Pourquoi la variable statique ne fonctionne pas

[Linker error] undefined reference to `A::i' #include  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; } 

Vous avez seulement déclaré A::i , vous devez définir A::i avant de l’utiliser.

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

De plus, votre fonction init () devrait renvoyer une valeur ou être définie sur void.

Vous avez déclaré A::i dans votre classe, mais vous ne l’avez pas défini. Vous devez append une définition après la class A

 class A { public: static int i; ... }; int A::i;