IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Spécialisation de classe Template


Sujet :

Langage C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Spécialisation de classe Template
    Bonjour à tous,

    J'ai une classe de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    template<class T>
    class CMyClass
    {
    public:
        void MethodA();
        void MethodB();
        void MethodC();
    };
    J'aimerai ne spécialiser que la méthode B pour T = std::string. Si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    template<>
    void CMyClass<std::string>::MethodB()
    {
     
    }
    J'obtiendrais 2 erreurs de link (une MethodA, l'autre pour MethodC).

    Je peux passer par une seconde classe se chargeant du traitement de la MethodB (donc ne possédant qu'une fonction qu'appellerai MethodB de ma clase principale et la spécialiser), mais y aurai-t-il une autre solution ?

    Merci beaucoup,

    A bientôt

  2. #2
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 940
    Par défaut
    Malheureusement, il me semble bien que quand tu spécialises une classe template, tu es obligé de redéfinir entièrement la classe spécialisée, de façon appropriée pour le type (voir la faq : http://cpp.developpez.com/faq/cpp/?p...specialisation). Donc difficile d'écrire une seule fois le code et de le réutiliser pour tes spécialisations. Par contre, tu dois peut-être pouvoir hériter de la classe template, je ne sais pas si ça peut résoudre ton problème.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Ce ne sont que de petites méthodes, donc s'il faut les redéfinir c'est pas grave, je vais m'en contenter,

    J'étais jsute curieux


    Merci beaucoup,

    A bientôt

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/10/2013, 10h46
  2. Spécialisation methode classe template
    Par kuroro20 dans le forum C++
    Réponses: 1
    Dernier message: 03/02/2011, 15h59
  3. Réponses: 3
    Dernier message: 09/04/2009, 11h30
  4. Réponses: 4
    Dernier message: 15/10/2008, 09h33
  5. Spécialisation de méthode membre de classe template
    Par Zbouirf dans le forum Langage
    Réponses: 3
    Dernier message: 23/07/2008, 02h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo