使用 Boost 1.43 线程,以下是可编译的:
void MyClass::threadFn(...) { ... }
void MyClass::doFn(...) {
...
boost::thread(&MyClass::threadFn, this, ...);
}
但以下内容不可编译:
void MyClass:doFn(...) {
...
struct MyStruct {
MyStruct(...) { ... };
}
boost::thread(&MyStruct, ...);
}
这产生'MyClass::doFn::MyStruct': illegal use of this type as an expression
. 请注意,我不是试图将指针传递给 ; 的实例MyStruct
。我试图传递类型本身,就像我传递函数指针一样,这样boost::thread
将调用该类型的构造函数。
通过传递可调用类型的对象来启动新线程
那么如何将struct
类型的地址传递给boost::thread
函数(AFAIK 这也适用于boost::bind
)?