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 :

pointeurs sur fonction en C++


Sujet :

C++

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 79
    Points : 37
    Points
    37
    Par défaut pointeurs sur fonction en C++
    Salut

    existe il en C++ une meilleur maniere que les pointeurs sur fonction qui viennent du C ?

    c'est tout
    Merci

  2. #2
    Membre actif Avatar de Nicodemus
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 242
    Points : 212
    Points
    212
    Par défaut
    existe il en C++ une meilleur maniere que les pointeurs sur fonction qui viennent du C ?
    Meilleure manière pour faire quoi aussi ?

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 79
    Points : 37
    Points
    37
    Par défaut
    une maniere plus adapté au C++ ... je sais pas, ya ptetere des classes toutes faites qui permettent de lancer une fonction définie en fonciton du type de d'info a analyser...

    dans mon cas il s'agit de faire un parseur de requetes ... donc un système de ce type s'impose, je peux pas y alelr au if ...

    si ca n'existe pas jele ferai a la maniere du C alors
    Merci

  4. #4
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    une meilleure technique consiste à utiliser un design pattern.
    Cas typique du Factory si je ne m'abuse : appeler une fonction, suivant certains paramètres. Va jeter un oeil sur :
    http://www.dofactory.com/Patterns/PatternFactory.aspx

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    La STL utilise des foncteurs. Généralement on se passe des pointeurs de focntions via une classe.
    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
     
    class TimerCallback
    {
    public:
        virtual void DoIt() = 0;
    };
     
    // appelle le callback tous les <Ms> millisecondes
    void CreateTimer&#40; int Ms, TimerCallBack * &#41;;
     
    // notre callback à appeler
    class MyCallBack &#58; public TimerCallback
    &#123;
    public&#58;
        virtual void DoIt&#40;&#41;
        &#123;
            cout << "coucou\n";
        &#125;
    &#125;;

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu peux aussi aller jeter un oeil du côté de boost::function

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 79
    Points : 37
    Points
    37
    Par défaut
    ok merci tlm!

    Je vais regarder du cote des design patterns deja, ca a l'air bien interessant...

  8. #8
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Bonjour,
    une manière de faire sans if ni switch pour les fonctions est de se baser sur le polymorphisme.

    Tu définis une classe de base avec des méthodes viruelle abstraites, puis tu en dérives. Seules les classes fillles auront le code spécifique.

    Le swicth (ou le if) est alors reporté sur l'appelant, et avec un algo étudié peut être centralisé une fois et une seule dans le code.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/02/2005, 21h47
  2. Réponses: 10
    Dernier message: 03/02/2005, 14h09
  3. Réponses: 5
    Dernier message: 12/01/2005, 21h58
  4. [langage] Pointeur sur fonction
    Par Fanch.g dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2004, 11h43
  5. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 20h37

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