boost :: bind线程用于指向带参数的函数的指针

时间:2013-09-30 17:27:05

标签: c++ boost function-pointers boost-thread boost-bind

我有一个函数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以及如何使用函数参数传递函数指针吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

您的代码示例有一些错误。这是一个固定版本,其中bind调用的返回值用作boost::thread构造函数中的唯一参数:

boost::thread consumer_thread(boost::bind(foo, ob));

但是你可以完全跳过对boost::bind的调用,将函数及其参数传递给构造函数:

boost::thread consumer_thread(foo, ob);

答案 1 :(得分:2)

那应该是bind(foo, ob)

但是,我很确定boost::thread具有与std::thread相同的界面,在这种情况下,您根本不需要bind

boost::thread consumer_thread(foo, ob);