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

 C++ Discussion :

surcharge ou template ?


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 109
    Points
    109
    Par défaut surcharge ou template ?
    J'ai besoin d'afficher a la fois des types const, volatile, et sans qualificateurs, or quand je compile
    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
     
     
    void Affiche(const double& d)
    {
        //** qqchose
    }
     
    void Affiche(volatile double& d)
    {
        //** même chose
    }
     
    int main()
    {
       const double C = 1.2;
       volatile double V = C+1;
       double D = V+1;
       Affiche(C);
       Affiche(V);
       Affiche(D);
    }
    J'ai une erreur de compilation concernant 'Affiche(D);' car le compilateur ne sait pas laquelle des deux surcharges de Affiche appeler.

    J'imagine que je pourrais proposer une troisième surcharge d'Affiche du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void Affiche(double& d)
    {
        //***meme chose
    }
    Mais par paresse j ai utilisé

    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
     
    template<class T> void Affiche(T& d)
    {
        //** toujours le meme code
    }
     
     
    int main()
    {
       const double C = 1.2;
       volatile double V = C+1;
       double D = V+1;
       Affiche(C);
       Affiche(V);
       Affiche(D);
    }
    Et la ça marche...

    Ma question est : est ce que j'ai 'bien' fait ou ai je raté un wagon ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut
    Voir le 5) dans cette page.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 109
    Points
    109
    Par défaut
    Oui je viens de lire...
    malgré ce qu'il semble dire lorsqu'il parle d'absence ou présence de const et volatile, je n'ai pas d'erreur à la compilation de mon premier code.
    Par contre, si je comprends bien j'en aurais eu une si j'avais testé ma solution pas paresseuse.
    Par contre aucun problème avec la dernière solution si on laisse le compilateur se débrouiller tout seul avec le patron de fonction.

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

Discussions similaires

  1. probleme surcharge [] sur template
    Par kranagard dans le forum Langage
    Réponses: 18
    Dernier message: 15/04/2010, 15h28
  2. [mingw] - Surcharge opérateur template
    Par buzzkaido dans le forum C++
    Réponses: 1
    Dernier message: 26/06/2009, 11h27
  3. [eZ Publish] Surcharge des templates
    Par bmcorptn dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 16/03/2009, 17h42
  4. surcharge fonction template
    Par Montag dans le forum Langage
    Réponses: 6
    Dernier message: 21/08/2008, 18h48
  5. friend surcharge classe template
    Par fridollin dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 21h37

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