私のクラス/構造体にスレッドオブジェクトを作成したいが、宣言中にすぐに初期化したくない。 Inteadは後でそれをやりたいしたがって、以下のコードスニペットのように、このコンパイルエラーが発生しています。これをどうやって解決するのですか?エラーC2280 C++で初期化せずにstd :: threadを作成中
エラーC2280: 'のstd ::スレッド::スレッド(CONSTのstd ::スレッド&)':私はこのエラーを引き起こすラインを観察した削除機能
を参照する を試行することである。
std::thread t2;
それは我々だけで初期化せずにはstd ::スレッドを宣言することができないことを意味するのでしょうか?これは、このスレッドで答えIs it possible to define an std::thread and initialize it later?
struct Abc
{
int a;
std::thread t2;
void mem1()
{
printf("mem1\n");
}
void mem2()
{
printf("mem2\n");
std::thread t1(&Abc::mem1, Abc());
t2.swap(t1);
printf("after spawning t1\n");
t2.join();
}
};
エラーの詳細を矛盾:
C:\プログラムファイル(x86の)\のMicrosoft Visual Studioの12.0 \ VC \は\ xmemory0(611)を含み:エラーC2280: 'std :: thread :: thread(const std :: thread &)':削除された関数を参照しようとしています1>
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ include \ thread(70): 'stdの宣言を参照してください。 ::スレッド::スレッドは、ABC「1>この診断は、コンパイラが生成 機能で発生した」:: Abcの(定数Abcの&)
このコードはokです。ここで動作します:https://ideone.com/xRjkcv。私はthik問題は別の場所です。あなたのプログラムの残りの部分を投稿するか、全体をクリーニング/リビルドしてみてください... –