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 :

Detecter le type d'un argument d'une fonction


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut Detecter le type d'un argument d'une fonction
    Bonjour,
    je dois passer un parametre à une fonction, le type de ce parametre est string ou double, en fonction de ce type, la fonction va se comporter differement. Coment détecter le type du parametre d entrée?

    (Cette fonction n'appartient à aucune classe)

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 870
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 870
    Par défaut
    Salut,

    Tu peux implémenter deux fonctions, une qui gérera un cas, et l'autre qui gérera l'autre. Ou bien tu lui passes un pointeur non typé ?

    C'est la surcharge d'une fonction.

    A+

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Tu peux utiliser les templates.
    Ca depend de ce que tu fais dans ton programme.

    Sinon, je verrais bien deux fonctions: isString() et isDouble()...

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 870
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 870
    Par défaut
    Oui bien sûr les templates, c'est encore plus propre dans ce cas

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    mais quelle est la difference entre un template et la surcharge d'une fonction? C'est le fait que pour le template, quelque soit le type le code de la fonction sera le meme alors que pour la surcharge, le code peut etre different?

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 870
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 870
    Par défaut
    Oui les templates permettent d'éviter de dupliquer du code.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Par défaut
    d'accord, mais vu qu en fonction du type, j effectue une ecriture dans un fichier du parametre que je recois et que a facon de l ecrire dépend de son type, je ne peut pas utiliser les templates.
    Merci pour votre aide

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Hé non...
    Avec les stream du C++, tu n'as pas besoin de connaitre le type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ostream fichier; // à compléter
    fichier << donnees
    marchera si donnees est string ou double...cf FAQ

    Donc les templates sont tes amis!

  9. #9
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 870
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 870
    Par défaut
    Citation Envoyé par flipper203
    d'accord, mais vu qu en fonction du type, j effectue une ecriture dans un fichier du parametre que je recois et que a facon de l ecrire dépend de son type, je ne peut pas utiliser les templates.
    Merci pour votre aide
    Tu peux spécialiser une template, en fonction des besoins.
    De plus, si tu écris dans un fichier, les opérateurs de flux >> et << sont déjà écrits de telle façon qu'ils autorisent les différents types d'argument, donc je pense que c'est une bonne solution pour toi

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par flipper203
    mais quelle est la difference entre un template et la surcharge d'une fonction? C'est le fait que pour le template, quelque soit le type le code de la fonction sera le meme alors que pour la surcharge, le code peut etre different?
    Pour une fonction, c'est exactement ça

    L'exemple donné pour << est parlant, c'est en fait une fonction template pour le flux utilisé, mais c'est une surcharge pour le type de données à afficher.

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/07/2010, 10h34
  2. Réponses: 9
    Dernier message: 10/05/2010, 21h35
  3. Detecter le type d'un navigateur dans une jsp
    Par air75 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 27/05/2009, 12h00
  4. Réponses: 30
    Dernier message: 27/03/2008, 15h02
  5. Réponses: 11
    Dernier message: 18/02/2007, 15h37

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