我遇到了一些关于boost :: bind和创建线程的问题。
基本上,我想在“扫描仪”对象上调用“扫描”功能,使用 绑定。
这样的事情:
Scanner scanner;
int id_to_scan = 1;
boost::thread thr1(boost::bind(&scanner::scan));
然而,我正在惹恼语法。如何将数据传递到扫描中?作为构造函数的一部分?
答案 0 :(得分:9)
请记住,任何成员函数的第一个参数都是对象。
所以如果你想打电话:
scanner* s;
s->scan()
使用绑定:
boost::bind(&scanner::scan, s);
如果你想打电话:
s->scan(42);
使用它:
boost::bind(&scanner::scan, s, 42);
因为我经常希望在创建绑定对象的对象上调用bind,所以我经常这样做:
boost::bind(&scanner::scan, this);
祝你好运。