std::thread 参照渡しによるコピー コンストラクターの呼び出し
問題:
渡すときクラスのオブジェクトが std::thread に参照によって Log されると、参照の受け渡しではコピー コンストラクターがバイパスされるはずであるにもかかわらず、コンパイラ エラーが発生します。逆に、オブジェクトをポインタで渡すと、問題は解決します。
説明:
この動作の根本的な理由は、std::thread が引数を渡す必要があることです。価値。 Log &logger のように、参照による受け渡しには、ポインターを渡すのと同じ効果があります。つまり、スレッドに渡すオブジェクトのコピーを生成するには、やはりコピー コンストラクターが必要です。
解決策:
参照セマンティクスを取り戻すには、std::reference_wrapper:
std::thread newThread(session, &sock, std::ref(logger));
注:
以上がクラス オブジェクトを参照によって std::thread に渡すと、コピー コンストラクターがトリガーされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。