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
)?