web-dev-qa-db-ja.com

THREAD ERROR:非静的メンバー関数の無効な使用

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();
7
Jacob
 thread thread_1(&test_class::createS, this, 0, nCells/2, map1); 
 thread thread_2(&test_class::createS, this, nCells/2, nCells, map2);

注:createSがオブジェクトの状態に依存しない場合は、staticクラスメンバーにして、以前と同じ方法で呼び出してください。

8
A.S.H