我有一个函数foo(myclass* ob(,我正在尝试使用consumer_thread(boost::bind(&foo((&ob((创建一个消费者线程
代码无法编译,我认为这是由于我将函数参数传递给函数指针的不恰当方式。
class myclass{
// stuff
}
void foo(myclass* ob){
// stuff
}
int main(){
myclass* ob = new myclass();
boost::thread consumer_thread()boost::bind(&foo)(&ob));
// stuff
}
我做错了什么?这里有人可以详细说明 boost::bind 以及如何使用函数参数传递函数指针吗?
提前感谢!
您的代码示例有一些错误。这是一个固定版本,其中调用 bind
的返回值用作 boost::thread
构造函数中的唯一参数:
boost::thread consumer_thread(boost::bind(foo, ob));
但是你可以完全跳过对boost::bind
的调用,将函数及其参数传递给构造函数:
boost::thread consumer_thread(foo, ob);
这应该是bind(foo, ob)
.
但是,我相当确定boost::thread
具有与std::thread
相同的界面,在这种情况下,您根本不需要bind
:
boost::thread consumer_thread(foo, ob);