Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens des « références non définies » lors de l'utilisation de membres de classe statiques en C ?

Pourquoi est-ce que j'obtiens des « références non définies » lors de l'utilisation de membres de classe statiques en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-11 03:07:08745parcourir

Why Do I Get

Références non définies aux membres de classe statiques

En C, les membres statiques définis dans les classes nécessitent une gestion appropriée pour éviter les erreurs de compilation.

Raison des références non définies

Membres statiques, bien qu'ils soient déclarés au sein de la classe définitions, ne sont pas automatiquement définies, sauf si cela est explicitement fait ailleurs. En effet, les déclarations diffèrent des définitions en C . Une déclaration présente simplement le membre, tandis qu'une définition alloue de la mémoire et fournit une valeur initiale.

Exemple

Considérons la classe suivante avec un membre statique non déclaré :

class Example {
    static bool exampleStaticMember;
};

Tenter d'utiliser exampleStaticMember sans le définir entraînera des "références non définies" erreurs.

Exigences de définition

Pour résoudre ce problème, le membre statique doit être explicitement défini, généralement dans le fichier source (.cpp) qui contient les définitions de classe. La définition déclare simplement à nouveau le membre avec son type de données et un point-virgule (';').

bool Example::exampleStaticMember;

Cas particuliers

  • Const Membres statiques intégraux/énumérations : Ceux-ci peuvent être initialisés dans la définition de la classe lui-même.
  • Membres du modèle statique :Les membres statiques des modèles de classe nécessitent une définition dans le fichier d'en-tête.

Autres utilisations statiques

Notez que le mot-clé static a des significations différentes lorsqu'il est appliqué en dehors de classes :

  • Objets statiques dans les fonctions : Déclare un objet qui conserve sa valeur entre les appels de fonction.
  • Objets/fonctions statiques dans la portée de l'espace de noms : Déclare des objets/fonctions avec un lien interne.

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