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

Boost C++ Discussion :

binder une methode avec des parametres


Sujet :

Boost C++

  1. #1
    Membre régulier
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : System Integration Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Points : 112
    Points
    112
    Par défaut binder une methode avec des parametres
    Bonjour,

    soit le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class CHandlers
    {
    	public :
    		CHandlers	() {};
    		typedef boost::function<void (const char *, const char *)> TProto;
     
    		TProto m_Func;
     
    		static void Callback(void *p_pData, const char *p_pP1, const char *p_pP2) {
    			CHandlers *l_pThis=(CHandlers *)(p_pData);
    			if (l_pThis) l_pThis->m_Func(p_pP1,p_pP2);
    };
    la classe CHandlers sert d'interface avec une bibliotheque de lecture XML (expat).
    Je souhaite faire 'pointer' m_Func sur une methode d'une classe, par exemple A::do ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class A
    {
    	public :
    		A() {};
     
    		void do(const char *p_pP1,const char *p_pP2) {
    			// do something with parameters
    		};		
    };
    pour ca,je pense utiliser boost::bind, quelque chose qui ressemblerait a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetHandlers().m_Func=boost:bind(&A::do,this,_1)
    mais je bloque sur la facon de dire au compilo que le foncteur prend 2 parametres...

    et j'avoue que la doc de boost::bind ne m'aide pas beaucoup pour ce point

    quelqu'un peut-il m'indiquer comment faire et me donner une explication

    merci

    V

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Il manque une information, sur quel objet tu veux binder ta fonction membre ?

    Disons qu'il s'appel a, dans ce cas ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    using namespace std::placeholder;
    std::bind(&A::do,a,_1,_2);

  3. #3
    Membre régulier
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : System Integration Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par Flob90 Voir le message
    Il manque une information, sur quel objet tu veux binder ta fonction membre ?
    N est pas le this justement ?
    Disons qu'il s'appel a, dans ce cas ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    using namespace std::placeholder;
    std::bind(&A::do,a,_1,_2);
    je vais essayer ca asap
    Merci

  4. #4
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Ha oui en effet, je n'avais pas vu le this, autant pour moi.

    Donc en remplacant le a de mon code par this, ca devrait marcher.

  5. #5
    Membre régulier
    Profil pro
    System Integration Project Manager
    Inscrit en
    Octobre 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : System Integration Project Manager
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 219
    Points : 112
    Points
    112
    Par défaut
    super ca marche nickel.

    je ne sais pas pourquoi, je n'ai pas reussi a trouver ca tout seul !! la fatigue sans doute !

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

Discussions similaires

  1. appel d'une servlet avec des parametres
    Par Mickael Scofild dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/08/2007, 11h23
  2. Réponses: 3
    Dernier message: 09/08/2006, 11h58
  3. [Reflection] Retrouver une methode avec des parametres primitifs
    Par rozwel dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 06/02/2006, 15h39
  4. Réponses: 8
    Dernier message: 02/02/2006, 18h13

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