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 :

Map contenant des pointeurs sur des fonctions membres


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 43
    Par défaut Map contenant des pointeurs sur des fonctions membres
    Bonjour,

    Supposons que je dispose d'une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A{
     
       private :
       void fct1();
       void fct2(std::string);
       int fct3(int,std::string);
     
       public :
       ...
    };
    Je voudrais avoir, en attribut, une map contenant des pointeurs sur toutes les fonctions membres (qui font des choses totalement différentes les unes des autres).

    J'ai essayé le code suivant, mais sans succès :

    Code A.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class A{
     
       private :
       std::map<std::string, void (*)()> lesFonctions
       void fct1();
       void fct2(std::string);
       int fct3(int,std::string);
     
       public :
       ...
    };

    Code A.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <string>
    #include <A.h>
     
    using namespace std;
     
    A::A(){
       lesFonctions["fct1"]=&fct1();
       lesFonctions["fct2"]=&fct2(string);
       ...   
    }

    Auriez-vous une solution à me proposer ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Faire une map directement, comme ça, sur toutes les fonctions membre est impossible dès que leur signature diffère(si ils n'ont pas les mêmes argument, ou pas le même type de retour, ou ne sont pas membre de la même classe). Par contre tu as ce tutoriel qui semble répondre à ta problématique. Tu peux aussi utiliser une bibliothèque d'introspection du genre CAMP. D'autre part les fonctions non-statique membre d'une classe ont cette classe dans leur signature : fct1 sera de type void (A::*)(), fct2 void (A::*)(std::string) et fct3 int (A::*)(int, std::string)

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

Discussions similaires

  1. Pointeur sur une fonction membre templatée et +
    Par metagoto dans le forum Langage
    Réponses: 2
    Dernier message: 09/08/2013, 02h05
  2. Réponses: 18
    Dernier message: 01/04/2013, 17h07
  3. Manipulation des pointeurs sur des array of record
    Par kracter56 dans le forum Débuter
    Réponses: 8
    Dernier message: 13/04/2012, 09h58
  4. Réponses: 5
    Dernier message: 29/06/2006, 17h23
  5. Réponses: 3
    Dernier message: 16/05/2006, 18h22

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