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

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

Mary-Kate Olsen
Libérer: 2024-12-03 15:25:10
original
603 Les gens l'ont consulté

How to Declare Non-Integral Static Data Members in C   Class Templates?

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

Dans la programmation orientée objet, il est souvent nécessaire de déclarer des données membres statiques dans les modèles de classe. Cela peut être difficile en raison de la nature non intégrale inhérente de ces données membres. Une approche pour surmonter cette limitation consiste à séparer les instructions de déclaration et de définition.

Considérez l'exemple de code suivant :

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

Cette déclaration crée un membre de données statique nommé "something_relevant" dans la classe. modèle "S". Cependant, comme il n'est pas de type intégral, le compilateur n'acceptera pas cette déclaration.

Pour résoudre ce problème, la définition de "something_relevant" peut être placée dans une instruction distincte :

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

En définissant le membre de données statique en dehors de la déclaration de classe, le compilateur peut garantir que la définition n'est évaluée qu'une seule fois, quel que soit le nombre d'instances du modèle de classe. créé.

Cette technique permet la création de données membres statiques au sein de modèles de classe, même si elles ne sont pas de type intégral. Cela garantit également que les données membres statiques sont initialisées avec la valeur correcte.

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