0

ここで何か助けていただければ幸いです。Boost::Thread を使用して関数を非同期で呼び出そうとしていますが、エラーが発生します。これが私の実際のコードです。

主に:

vector<std::string> a = ...;
vector<std::string> b = ...;
vector<boost::thread> threads;

threads.push_back(boost::thread(do_work, an_integer, a[i], b.begin(), b.end()));

// Later I will join()...

他の場所:

void do_work(int i, std::string a_string, vector<string>::iterator begin, vector<string>::iterator end)
{
    // Some stuff
}

私はこのようなことにはまったく慣れておらず、C# に慣れています。とにかく、これらは私が得ているエラーです:

error C2664: 'void (int,std::string,std::_Vector_iterator<_Myvec>,std::_Vector_iterator<_Myvec>)' : cannot convert parameter 1 from 'std::_Vector_iterator<_Myvec>' to 'int'

error C2664: 'void (int,std::string,std::_Vector_iterator<_Myvec>,std::_Vector_iterator<_Myvec>)' : cannot convert parameter 3 from 'std::basic_string<_Elem,_Traits,_Ax>' to 'std::_Vector_iterator<_Myvec>'

error C2664: 'void (int,std::string,std::_Vector_iterator<_Myvec>,std::_Vector_iterator<_Myvec>)' : cannot convert parameter 4 from 'std::_Vector_iterator<_Myvec>' to 'std::_Vector_iterator<_Myvec>'

ご協力いただけると幸いです。私はほぼ間違いなく非常にばかげたことをしています!どうもありがとう。

4

1 に答える 1

1

そのコンパイラ エラーは、b.begin()b.end()は異なる型であり、リストしたコードには明らかに含まれていないことを示しています。コードを再チェックして、b他のものとして定義していないことを確認してください。an_integer(コンパイラはそれがイテレータであると認識しているので、これもチェックしてください。)

于 2012-06-11T00:05:22.753 に答える