2010-05-11 3 views
1

J'essaie d'utiliser boost::bind avec un boost::function en utilisant cela. Cela semble un exemple trivial mais je ne peux pas le faire fonctionner. Pouvez-vous m'aider?boost ne lie pas à la fonction membre même en utilisant ce

Est-ce parce que ce n'est pas permis ou est-ce que je fais quelque chose de mal?

// .h 
class MyClass{ 
publc: 
    void DoSomething( 
     const std::string& a, 
     const std::string& b); 
    void DoABind(); 

} 

//.cpp 
void MyClass::DoABind(){ 

    boost::function< void(const std::string& , const std::string&) > callback( 
     boost::bind(
       &MyClass::DoSomething, 
       this)); 

     // this line doesn't compile!!! 
} 

Répondre

3

Je pense que vous voulez bind(&MyClass::DoSomething, this, _1, _2). Je n'ai pas d'installation boost pour tester avec.

3

Vous avez oublié d'utiliser les paramètres fictifs. Essayez ceci:

boost::function< void(const std::string& , const std::string&) > callback(
    boost::bind(
      &MyClass::DoSomething, 
      this, _1, _2)); 

Ceci compile sur gcc 4.4.1 avec boost 1.41.

Questions connexes