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
Mary-Kate Olsenoriginal
2024-12-03 15:25:10548parcourir

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
};

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

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!

Déclaration:
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