Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens une erreur « Référence non définie à une variable statique » en C ?
Lorsque vous travaillez avec des variables de classe statiques, vous pouvez rencontrer l'erreur "Référence non définie à une variable statique" en C . Cet article explorera le problème et fournira une solution.
Considérez le code suivant comme exemple :
class Helloworld { public: static int x; void foo(); }; void Helloworld::foo() { Helloworld::x = 10; }
Lors de la compilation de ce code, vous pouvez recevoir l'erreur « référence non définie à « Helloworld » ::x'". En effet, vous n'avez pas fourni de définition pour la variable statique x.
En C , les variables de classe statiques doivent être définies en dehors de la définition de classe. Le simple fait d'ajouter une définition pour x dans la portée globale résoudra l'erreur :
int Helloworld::x; // Define the static variable
Vous pouvez initialiser x avec n'importe quelle valeur appropriée. Si aucun initialiseur n'est fourni, il sera initialisé à zéro par défaut.
Par conséquent, le code modifié ressemblera à ceci :
class Helloworld { public: static int x; void foo(); }; int Helloworld::x = 0; // Initialize the static variable void Helloworld::foo() { Helloworld::x = 10; }
Maintenant, le compilateur pourra localiser correctement la définition de x et résoudre l’erreur. N'oubliez pas que même si la fonction foo() n'est pas statique, elle peut toujours accéder à la variable statique x de la classe Helloworld.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!