Références non définies aux membres statiques : guide du débutant
Les membres de données statiques sont souvent employés pour partager des informations entre 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 données membres statiques. Ce problème 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 mémoire. Une définition, en revanche, alloue de la mémoire à la variable et fournit son adresse.
Dans le cas de données membres statiques, leur déclaration a lieu dans la définition de classe mais ne leur attribue pas d'adresse. La définition réelle doit être fournie séparément.
Définition de 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érons le code suivant :
// Header file (.h) class Example { static bool exampleStaticMember; }; // Implementation file (.cpp) bool Example::exampleStaticMember;
Exception pour les types intégraux et énumérations
Les données statiques membres des types intégraux ou énumérations peuvent être initialisées directement dans la classe définition :
class Example { static const int initialized = 15; };
Dans ce cas, la définition dans le fichier d'implémentation doit omettre le initializer :
const int Example::initialized;
Données membres statiques dans les modèles
Pour les modèles, les données membres statiques sont définies dans le fichier d'en-tête avec la déclaration de classe. L'exception à la règle de définition unique autorise plusieurs définitions de données statiques membres de modèles de classe.
Autres utilisations de « statique »
Au-delà de la portée de la classe, « statique » a significations supplémentaires :
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!