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 ?

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 ?

Susan Sarandon
Libérer: 2024-12-30 01:12:16
original
421 Les gens l'ont consulté

Why Do I Get

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

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

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!

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