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 ?

Pourquoi est-ce que j'obtiens une erreur « Référence non définie à une variable statique » en C ?

Patricia Arquette
Libérer: 2024-12-15 11:46:10
original
1046 Les gens l'ont consulté

Why Am I Getting an

Résolution de l'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;
}
Copier après la connexion

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
Copier après la connexion

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;
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal