次の方法で共有


警告 C26406

(r.3) に生ポインターを owner<T> 割り当てないでください

この警告は、C++ Core Guidelines の R.3 を適用します。 詳細については、「C++ Core Guidelines R.3」を参照してください。

解説

所有者は、割り当てまたは他の所有者から初期化されます。 この警告は、生ポインターから所有者ポインターに値を代入したときに発生します。 生ポインターは所有権の譲渡を保証しません。元の所有者は引き続きリソースを保持し、解放を試みる場合があります。 所有者から生ポインターに値を代入することはできます。 生ポインターは、リソースにアクセスするための有効なクライアントですが、リソースを管理することはできません。

コード分析名: DONT_ASSIGN_RAW_TO_OWNER

オブジェクトのアドレスの使用:

このサンプルでは、defaultSocket のアドレスの所有権を所有者ポインター socket に割り当てようとします。

gsl::owner<Socket*> socket = defaultSocket ? &defaultSocket : new Socket(); // C26406