Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens des erreurs « Référence non définie à une variable statique » lors de l'accès à des variables statiques en C ?
Problème de référencement de variables statiques en C
En C, l'accès aux variables statiques dans les méthodes de classe non statiques peut entraîner des erreurs de compilation si la variable statique la variable n’est pas correctement définie. Une erreur courante rencontrée est "référence non définie à une variable statique".
Le problème
Considérez l'extrait de code suivant :
class Helloworld { public: static int x; void foo(); }; void Helloworld::foo() { Helloworld::x = 10; }
Ce code vise à accéder à la variable statique x à partir de la méthode non statique foo(). Cependant, la compilation de ce code peut entraîner l'erreur « référence non définie à une variable statique » car la variable statique x n'a pas de définition.
La solution
La solution est de fournir une définition de la variable statique x en dehors de la définition de classe. La définition peut être ajoutée après la définition de la classe, comme indiqué ci-dessous :
class Helloworld { public: static int x; void foo(); }; // Definition of static variable x int Helloworld::x = 0; // Initialize x to 0 (or any appropriate value) void Helloworld::foo() { Helloworld::x = 10; }
En définissant la variable statique x en dehors de la définition de la classe, le compilateur peut localiser et allouer de la mémoire pour x. De plus, il est important d'initialiser la variable statique à une valeur spécifique ou de lui permettre d'être initialisée à zéro en l'absence d'initialiseur.
Avec ces modifications, le code sera compilé et exécuté avec succès, vous permettant de accéder à la variable statique x à partir des fonctions membres non statiques 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!