C++でスレッドを理解しようとしていますが、この問題を解決する方法がわかりません。
「createS」という関数を実行するために2つのスレッドを呼び出したいのですが、次のエラーが発生します。
エラー:非静的メンバー関数の無効な使用
このトピックに関する他の質問を読みましたが、コードを機能させる方法が本当にわかりません。
誰かが私が間違っていることを私に説明し、解決策を見つける手助けをしてくれませんか?
test_class.cpp
void test_class::generateS(){
map1=new multimap<double,vector<int>>;
map2=new multimap<double,vector<int>>;
thread thread_1( createS, 0, nCells/2, map1 );
thread thread_2( createS, nCells/2, nCells, map2);
thread_1.join();
thread_2.join();
}
void test_class::createS(int startP, int endP, Costs *mapPointer){
//i do some stuff
}
test_class.h
void createS(int start, int end, Costs *mapPointer);
void generateS();
thread thread_1(&test_class::createS, this, 0, nCells/2, map1);
thread thread_2(&test_class::createS, this, nCells/2, nCells, map2);
注:createS
がオブジェクトの状態に依存しない場合は、static
クラスメンバーにして、以前と同じ方法で呼び出してください。