I am trying to use boost::bind
with a boost::function
using this. It seems a trivial example but I cannot make it work. Can you help me?
Is it because it is not allowed or am I doing something wrong?
// .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!!!
}
I think you want bind(&MyClass::DoSomething, this, _1, _2)
. I don't have a boost installation to test with though.
You forgot to use the parameter placeholders. Try this:
boost::function< void( const std::string& , const std::string& ) > callback(
boost::bind(
&MyClass::DoSomething,
this, _1, _2 ));
This compiles on gcc 4.4.1 with boost 1.41.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.