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
Barbara Streisandoriginal
2024-12-19 16:03:09806parcourir

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

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

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!

Déclaration:
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