Maison > développement back-end > C++ > Comment réaliser une spécialisation partielle d'une fonction membre au sein d'une classe modèle en C ?

Comment réaliser une spécialisation partielle d'une fonction membre au sein d'une classe modèle en C ?

Mary-Kate Olsen
Libérer: 2024-11-16 10:46:03
original
686 Les gens l'ont consulté

How can you achieve partial specialization of a member function within a template class in C  ?

Spécialisation partielle des fonctions membres de classe

Contrairement aux fonctions régulières, la spécialisation partielle uniquement d'une fonction membre au sein d'une classe modèle n'est pas autorisée en C . Au lieu de cela, il est nécessaire de spécialiser partiellement la classe entière.

Pour obtenir une spécialisation partielle d'une fonction membre, les étapes suivantes doivent être suivies :

  1. Déclarer une classe de modèle entièrement spécialisée pour les valeurs spécifiques des paramètres du modèle qui nécessitent la fonction membre spécialisée.
  2. Dans le modèle de classe spécialisée, définissez la fonction membre souhaitée.

Par exemple, pour créer une spécialisation partielle pour la fonction membre Deform() dans le code donné où nValue est égal à 0, le code suivant montre comment corriger le code d'origine :

// Partial specialization of the Object class for nValue = 0
template <>
class Object<int, 0>
{
private:
    int m_t;
    Object();
public:
    Object(int t): m_t(t) {}
    int Get() { return m_t; }
    Object& Deform()
    {
        std::cout << "Specialized\n";
        m_t = -1;
        return *this;
    }
};
Copier après la connexion

Avec ces modifications, le code spécialisera désormais correctement partiellement la fonction Deform() fonction membre pour nValue égale à 0.

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