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

Comment définir des membres de données statiques non intégraux dans les modèles de classe C ?

DDD
Libérer: 2024-12-01 18:46:12
original
185 Les gens l'ont consulté

How Do I Define Non-Integral Static Data Members in C   Class Templates?

Définition de données membres statiques dans les modèles de classe

Lorsque vous travaillez avec des modèles de classe, vous pouvez rencontrer le défi de déclarer des données membres statiques qui ne sont pas de type intégral. Cela se produit lorsque vous avez du code qui dépend de la présence d'un membre de données statique dans le modèle de classe mais qui n'est pas déterminé par son paramètre de modèle.

Une solution à ce problème consiste à définir le membre de données statique dans le fichier d'en-tête. où le modèle de classe est déclaré. Cela garantit que le membre est déclaré en dehors de la définition de la classe modèle, ce qui lui permet d'être initialisé séparément.

Par exemple, en considérant le modèle de classe suivant :

template <typename T>
struct S
{
    ...
    static double something_relevant;
};
Copier après la connexion

Nous pouvons définir le membre statique membre de données Something_relevant dans le même fichier d'en-tête comme suit :

template <typename T>
double S<T>::something_relevant = 1.5;
Copier après la connexion

Cette approche isole la définition du membre de données statique du modèle de classe, vous permettant de l'initialiser indépendamment. De plus, comme il fait partie d'un modèle, le compilateur garantit qu'il n'est défini 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal