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 :

fonction template par défaut


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut fonction template par défaut
    Bonjour,

    dans une de mes fonctions, j'ai un pointeur de fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double mafun(int toto,double (*f)(double tata));
    Maintenant, je désire que cette fonction "f" puisse recevoir des données utilisateurs. En C, je faisais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double mafun(int toto,double (*f)(double tata,void * ud));
    et dans le corps de la fonction "f" je faisais un cast sur une structure que je choisissais. Et si je n'avais pas besoin de cet argument, je faisais juste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double f(tata,NULL);
    En C++, je me dis qu'une bonne solution serait d'utiliser une fonction template, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    template<class T>
    double (*f)(double tata,const T & ud);
    Ma question est la suivante : et si je n'ai pas besoin de données utilisateur, comment dois-je procéder (voir mon exemple plus haut avec le NULL) ?

    J'espère avoir été clair...

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Tu peux utiliser les tuples pour cela.

    EDIT: sinon, tu as les variadic functions, mais c'est vraiment une pratique à éviter sauf si tu n'as pas le choix.

    C++0x devrait introduire les variadic templates, ce qui fournis un moyen élégant de rendre tout cela safe.

  3. #3
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Salut !

    Pas testé, mais je pense que ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    template<class T>
    double (*f)(double tata,const T & ud)
    {
        Définition de la "version template"
    }
     
    double (*f)(double tata)
    {
        Définition de la "version sans données utilisateur"
    }
    Pour le compilo, à priori, les fonctions suivantes sont différentes puisque pas le même nombre d'argument :

    f(double tata,const T & ud)
    et

    f(double tata)


    Donc quand tu les appelles avec 1 ou 2 argument, il devrait s'y retrouver.

Discussions similaires

  1. Projet template par défaut
    Par salim20001 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/03/2012, 17h50
  2. [VS2005] Utilisation des templates par défaut
    Par Nonos421 dans le forum Visual Studio
    Réponses: 2
    Dernier message: 21/03/2011, 17h18
  3. [Typo3] Emplacement des templates par défaut
    Par gleyral dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 31/01/2009, 13h22
  4. [Joomla!] Impossible de modifier le template par défaut
    Par MarcS dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 28/03/2007, 17h57
  5. Réponses: 15
    Dernier message: 21/08/2006, 02h41

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