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 :

typedef void (MyClass::*Fonction)()


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    septembre 2013
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : septembre 2013
    Messages : 230
    Points : 553
    Points
    553
    Par défaut typedef void (MyClass::*Fonction)()
    Salut tout le monde,
    Je viens de récupérer un code c++ et comme je suis débutant en ce domaine j'ai une question a vous poser. Je n'arrive tout simplement pas a comprendre ce bout de code. J'ai tenté de me renseigner auparavant mais les recherches ont été infructueuses.

    MyClass.h
    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
    class MyClass;
    
    typedef void(MyClass::*Fonction)();
    
    class MyClass : public OtherClass
    {
    	...
    	std::map<std::string, Fonction> functionFormat;
    	...
    public:
    	MyClass(std::string newFile = "C:/tmp");
    	void	formatAppelMessage();
    	void	formatEtatEntree();
    	void	formatSurveillanceLiaison();
    	void	formatAccuseReception();
    }

    MyClass.cpp
    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
    MyClass::MyClass(std::string newFile)
    {
    	...
     
    	functionFormat["PC"] = &MyClass::formatAppelMessage;
    	functionFormat["IS"] = &MyClass::formatEtatEntree;
    	functionFormat["MO"] = &MyClass::formatSurveillanceLiaison;
    	functionFormat["R"] = &MyClass::formatAccuseReception;
    }
     
    ...
    void MyClass:formatData()
    {
    (this->*functionFormat[idCommande.c_str()])();
    }
    En gros j'aimerais savoir ce que veut dire ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef void(MyClass::*Fonction)();
    Idem pour cette portion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::map<std::string, Fonction> functionFormat
    Je suppose vaguement que cette map contient d'autres fonctions. Si c'est bien cela je m'excuse mais je suis debutant en c++, et je ne connaissais pas.

    D'autre part si vous pouviez me confirmer cette partie. J'imagine qu'on va stocker les fonctions dans la map pour y faire appel plus tard. Ce qui me trouble c'est le &MyClass.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    functionFormat["PC"] = &MyClass::formatAppelMessage;
    D'autant plus que le code semble en appeler une plus tard. Dans ce cas ce serait selon le idCommande (qui est de type string) qu'on appellerait la fonction adequate n'est-ce pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (this->*functionFormat[idCommande.c_str()])();
    Merci d'avance pour vos réponses

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    6 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 6 828
    Points : 31 299
    Points
    31 299
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    le typedef déclare un type pointeur vers fonction membre de MyClass
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre confirmé
    Profil pro
    Developpeur
    Inscrit en
    septembre 2013
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : septembre 2013
    Messages : 230
    Points : 553
    Points
    553
    Par défaut
    Merci Bousk

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/12/2014, 19h25
  2. Equivalent de typedef void* en java
    Par safi11 dans le forum Général Java
    Réponses: 1
    Dernier message: 05/04/2013, 17h32
  3. [C++] Void* et fonctions virtuelles
    Par Aspic dans le forum Débuter
    Réponses: 7
    Dernier message: 02/01/2011, 11h55
  4. Signification de : "typedef void PortMidiStream;"
    Par Invité dans le forum Langage
    Réponses: 46
    Dernier message: 15/08/2009, 08h38
  5. des vector, des typedef et des fonctions.
    Par hpfx dans le forum SL & STL
    Réponses: 3
    Dernier message: 13/07/2007, 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