現在、別のスレッドへの参照によってオブジェクトを渡そうとしていますが、ソリューションをビルドしようとするとエラーが発生します。C++スレッドを作成して参照でオブジェクトを渡す
void OrderServer(Orders& customerOrders)
{
Item tempItem;
customerOrders.add(tempItem);
}
int main()
{
Orders customerOrders();
auto serverThread = std::thread(OrderServer, std::cref(customerOrders));
serverThread.detach();
return 0;
}
次のエラーです:
C:コミュニティ\ VCの\ツール\マイクロソフトのVisual Studio \ \プログラムファイル(x86の)\ 2017 \ MSVC \ 14.11.25503 \含める\ THR \ xthread( 240):エラーC2672: 'std :: invoke':一致するオーバーロードされた関数が見つかりませんでした 1> c:\プログラムファイル(x86)\ microsoftビジュアルスタジオ\ 2017 \コミュニティ\ vc \ tools \ msvc \ 14.11.25503 \ include \ (std :: tuple> &、std :: integer_sequence < _Ty、0,1)を実行します。 >) 'コンパイル中
を使用することができます。 'std :: ref()'を渡すか、関数が 'const'パラメータ参照を受け入れるようにしてください。 – Galik
あなたのスレッド関数は非const参照を受け付けます。しかし、 'std :: cref'でconst参照ラッパーを作成します。 – StoryTeller