Définition d'un membre de données statique dans un modèle de classe
Il est souvent nécessaire de définir un membre de données statique dans un modèle de classe. Cependant, l'approche traditionnelle consistant à définir le membre dans la déclaration de classe n'est pas réalisable car il doit être initialisé en dehors de la définition de classe en raison de types de données non intégraux. Cela pose un défi, en particulier lorsque la classe est un modèle, interdisant que la définition soit placée dans un fichier compilé distinct.
Pour résoudre ce problème, une technique consiste à définir le membre de données statique dans le fichier d'en-tête mais à initialiser à l'extérieur dans une définition distincte. Voici un exemple :
template <typename T> struct S { static double something_relevant; }; template <typename T> double S<T>::something_relevant = 1.5;
Dans cette approche, le membre de données statiques Something_relevant est initialement déclaré dans la définition du modèle de classe. Ensuite, son initialisation est effectuée à l'extérieur dans une définition distincte, où il peut s'agir de n'importe quel type de données non intégral. Puisque la définition fait partie du modèle, le compilateur garantit qu'elle n'est définie qu'une seule fois, évitant ainsi plusieurs définitions.
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!