C++11 のstd::thread
クラスを使用して、クラスのメンバー関数を実行して並列実行しようとしています。
ヘッダー ファイルのコードは次のようになります。
class SomeClass {
vector<int> classVector;
void threadFunction(bool arg1, bool arg2);
public:
void otherFunction();
};
cpp ファイルは次のようになります。
void SomeClass::threadFunction(bool arg1, bool arg2) {
//thread task
}
void SomeClass::otherFunction() {
thread t1(&SomeClass::threadFunction, arg1, arg2, *this);
t1.join();
}
Mac OS X 10.8.3 で Xcode 4.6.1 を使用しています。私が使用しているコンパイラは、Xcode に付属の Apple LLVM 4.2 です。
上記のコードは機能しません。コンパイラエラーは、"Attempted to use deleted function"
.
スレッド作成の行に、次のメッセージが表示されます。
In instantiation of function template specialization 'std::__1::thread::thread<void (SomeClass::*)(bool, bool), bool &, bool &, FETD2DSolver &, void>' requested here
私はC++ 11とスレッドクラスが初めてです。誰かが私を助けることができますか?