Maison > développement back-end > C++ > Comment définir et initialiser des membres de données statiques dans des modèles de classe C ?

Comment définir et initialiser des membres de données statiques dans des modèles de classe C ?

Patricia Arquette
Libérer: 2024-12-02 08:36:14
original
510 Les gens l'ont consulté

How to Define and Initialize Static Data Members in C   Class Templates?

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

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!

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