3

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

提前致谢!

4

2 回答 2

3

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

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

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

boost::thread consumer_thread(foo, ob);
于 2013-09-30T17:33:21.087 回答
2

那应该是bind(foo, ob)

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

boost::thread consumer_thread(foo, ob);
于 2013-09-30T17:33:53.280 回答