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 partielles de méthodes.


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut Spécialisation partielles de méthodes.
    Bonjour,
    Je part d'une classe template avec 2 arguments template. Je souhaite spécialiser une des méthodes sur un seul de deux arguments. Echec
    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    template< class A, class B>
    class T
    {
    public:
       void MaFonction()
       {
          std::cout<<"?,?"<<std::endl;
       }
    };
    // cette spécialisation fonctionne
    template<>
    void
    T<int,int>::MaFonction()
    {
       std::cout<<"int,int"<<std::endl;
    }
     
    // celle-ci ne compile pas
    template<class B>
    void
    T<int,B>::MaFonction()
    {
       std::cout<<"int,?"<<std::endl;
    }
    Je suis obligé de spécialiser partiellement toute la classe
    Le code suivant ne pose pas de problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    template< class A, class B>
    class T
    {
    public:
       void MaFonction()
       {
          std::cout<<"?,?"<<std::endl;
       }
    };
     
    template<class B>
    class T<int,B>
    {
    public:
       void MaFonction()
       {
          std::cout<<"int,?"<<std::endl;
       }
    };
     
    template<>
    class T<int,int>
    {
    public:
       void MaFonction()
       {
          std::cout<<"int,int"<<std::endl;
       }
    };
    Je n'ai rien trouvé sur la spécialisation partielle de méthodes. En général, les docs parlent de spécialisation partielle pour les classes et de spécialisation (tout court) pour les méthodes. Une idée?

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    normalement tout depend du compilot.
    mais tu peut(normalmen) faire une spécialisation partielle mais dans l'ordre inverse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template<class B>
    void
    T<B,int>::MaFonction()
    {
       std::cout<<"?,int"<<std::endl;
    }

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    J'ai essayé avec Visual (Express) et avec gcc (sous windows) et les deux refusent la spécialisation telle que donnée par Mongaulois. J'ai peur d'avoir à spécialiser partiellement toute la classe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2008, 09h33
  2. Réponses: 4
    Dernier message: 04/09/2008, 10h58
  3. Modélisation spécialisation partielle.
    Par 3DArchi dans le forum BOUML
    Réponses: 2
    Dernier message: 06/08/2008, 10h06
  4. Spécialisation partielle de fonction membre?
    Par NiamorH dans le forum C++
    Réponses: 2
    Dernier message: 20/06/2008, 14h54
  5. Réponses: 4
    Dernier message: 29/01/2006, 17h54

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