Reputation: 774
I have a function foo(myclass* ob) and I am trying to create a consumer thread using consumer_thread(boost::bind(&foo)(&ob))
The code does not compile which I believe is due to my inappropriate way of passing the function argument to the function pointer.
class myclass{
// stuff
}
void foo(myclass* ob){
// stuff
}
int main(){
myclass* ob = new myclass();
boost::thread consumer_thread()boost::bind(&foo)(&ob));
// stuff
}
What am I doing wrong? Can anyone here elaborate on boost::bind and how to pass function pointers with function arguments?
Thanks in advance!
Upvotes: 3
Views: 1620
Reputation: 254461
That should be bind(foo, ob)
.
However, I'm fairly sure that boost::thread
has the same interface as std::thread
, in which case you don't need bind
at all:
boost::thread consumer_thread(foo, ob);
Upvotes: 2
Reputation: 227400
Your code sample has some errors. This is a fixed version, where the return value of the call to bind
is used as the sole parameter in the boost::thread
constructor:
boost::thread consumer_thread(boost::bind(foo, ob));
But you can skip the call to boost::bind
entirely, passing the function and its parameters to the constructor:
boost::thread consumer_thread(foo, ob);
Upvotes: 3