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 :

Appel dynamique de m�thode


Sujet :

C++

  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par d�faut Appel dynamique de m�thode
    J'ai trouver dans la FAQ une maniere de tester une chaine de caracteres celon plusieurs crit�res :

    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
    31
    32
    // fonctions de traitement
    void parametre_input();
    void parametre_output();
    void parametre_inconnu();
     
    // type pointeur de fonction de traitement
    typedef void (*parametre_fct)();
     
    void analyse_parametre( const string & Param )
    {
        static map<string, parametre_fct> param_map;
     
        // initialiser la map si ce n'est pas fait
        if ( param_map.empty() )
        {
            param_map[ "/input" ] = parametre_input;
            param_map[ "/output" ] = parametre_output;
        }
     
        // rechercher la fonction associée à Param
        map<string, parametre_fct>::const_iterator i = param_map.find( Param );
        if ( i == param_map.end() )
        {
            // échec
            parametre_inconnu();
        }
        else
        {
            // appeler la fonction associée
            (i->second)();
        }
    }
    Je souhaiterai implanter sa dans une classe et au lieu d'appell� une fonction appell� une m�thode de cette m�me classe la partie � modifier serai donc celle-ci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // rechercher la fonction associée à Param
        map<string, parametre_fct>::const_iterator i = param_map.find( Param );
        if ( i == param_map.end() )
        {
            // échec
            parametre_inconnu();
        }
        else
        {
            // appeler la fonction associée
            (i->second)();
        }
    Mais je n'ai aucune id�e de comment proc�der.

    Merci

  2. #2
    Membre chevronn�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Par d�faut
    Il faut que tu passes par les pointeurs de membres :

    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
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    typedef void(MyClass::*parametre_fct)();
     
    void MyClass::analyse_parametre( const string & Param )
    {
        static map<string, parametre_fct> param_map;
     
        // initialiser la map si ce n'est pas fait
        if ( param_map.empty() )
        {
            param_map[ "/input" ] = &MyClass::parametre_input;
            param_map[ "/output" ] = &MyClass::parametre_output;
        }
     
        // rechercher la fonction associée à Param
        map<string, parametre_fct>::const_iterator i = param_map.find( Param );
        if ( i == param_map.end() )
        {
            // échec
            parametre_inconnu();
        }
        else
        {
            // appeler la fonction associée
            this->(i->second)();
        }
    }
     
    void MyClass:parametre_input()
    {
    // traitement inoput
    }
     
    void MyClass::parametre_output()
    {
    //traitement output
    }

  3. #3
    Membre habitu�
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8
    Par d�faut
    Merci je test !

    Sinon autre question comment passer des parametres aux m�thodes ainsi appell�es ?

  4. #4
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Tu peux faire des pointeurs vers des fonctions membre qui ont des parametres.

Discussions similaires

  1. POO Appel dynamique � une m�thode d'un objet
    Par thecanea dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 16/02/2011, 11h58
  2. [POO] Appel dynamique d'une m�thode
    Par hollywood dans le forum G�n�ral JavaScript
    R�ponses: 10
    Dernier message: 16/12/2008, 12h27
  3. R�ponses: 1
    Dernier message: 06/09/2008, 12h54
  4. Appel dynamique d'une m�thode statique
    Par oneTime dans le forum Langage
    R�ponses: 2
    Dernier message: 29/07/2008, 11h29

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