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型のコンストラクターが呼び出されます。
Boost 1.43スレッド仕様によると:
呼び出し可能なタイプのオブジェクトを渡すことにより、新しいスレッドが起動されます
structでは、その型のアドレスを関数に渡すにはどうすればよいですかboost::thread(AFAIKこれはに適用されますboost::bind)?