Références indéfinies aux membres statiques: Guide d'un débutant
Les membres de données statiques sont souvent utilisés pour partager des informations sur les instances d'une classe. Cependant, les développeurs rencontrent parfois des erreurs de "référence non définie" lors de l'utilisation de membres de données statiques. Cette question se pose en raison de la distinction entre les déclarations et les définitions.
Comprendre les déclarations et les définitions
Une déclaration introduit l'existence d'une variable au compilateur sans spécifier son emplacement de mémoire. Une définition, en revanche, alloue la mémoire à la variable et fournit son adresse.
Dans le cas des membres de données statiques, leur déclaration se produit dans la définition de la classe mais ne leur attribue pas d'adresse. La définition réelle doit être fournie séparément.
Définition des membres de données statiques
pour résoudre les erreurs de «référence non définie», définissez explicitement les membres de données statiques en dehors de la définition de classe, généralement dans le fichier d'implémentation (.cpp). Par exemple, considérez le code suivant:
// Header file (.h) class Example { static bool exampleStaticMember; }; // Implementation file (.cpp) bool Example::exampleStaticMember;
Exception pour les types intégraux et d'énumération
Les membres de données statiques des types de classe intégrale ou d'énumération peuvent être initialisés directement dans la définition de classe:
class Example { static const int initialized = 15; };
Dans ce cas, la définition dans le fichier d'implémentation doit omettre l'initialiseur:
const int Example::initialized;
Les membres de données statiques dans les modèles
pour les modèles, les membres de données statiques sont définis dans le fichier de tête avec le fichier de la classe avec les modèles. L'exception à la règle de définition unique permet plusieurs définitions des membres de données statiques des modèles de classe. Appels.
Dans la portée de l'espace de noms, il déclare des objets et des fonctions avec un lien interne, bien que cette utilisation soit découragée pour les objets.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3