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 et comment puis-je la corriger sans utiliser de méthodes statiques ?

Pourquoi est-ce que j'obtiens une erreur « Référence non définie à une variable statique » en C et comment puis-je la corriger sans utiliser de méthodes statiques ?

Barbara Streisand
Libérer: 2024-12-19 16:03:09
original
803 Les gens l'ont consulté

Why Do I Get an

Référence non définie à une variable statique en C

Lorsque vous travaillez avec des variables statiques en C, les développeurs rencontrent souvent l'erreur "référence non définie à une variable statique ". Cet article explore ce problème et propose une solution sans utiliser de méthode statique.

Problème :

Considérez le code suivant :

class Helloworld {
  public:
     static int x;
     void foo();
};
void Helloworld::foo() {
     Helloworld::x = 10;
};
Copier après la connexion

Ceci le code déclenche une erreur "référence non définie" car la variable statique x est référencée dans une méthode non statique foo(), mais il lui manque un définition.

Solution :

Pour résoudre ce problème, il est essentiel de fournir une définition de la variable membre statique x en dehors de la définition de la classe. Ceci peut être réalisé comme suit :

class Helloworld {
  public:
     static int x;
     void foo();
};

// Define the static variable outside the class
int Helloworld::x = 0;

void Helloworld::foo() {
     Helloworld::x = 10;
};
Copier après la connexion

En spécifiant la valeur initiale comme 0 ou en la laissant indéfinie, x sera initialisé à zéro. Alternativement, une valeur initiale plus appropriée peut être attribuée.

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!

source:php.cn
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