いくつかの異なるクライアントに提供する C++ ライブラリがあります。最近、パブリック インターフェイスで生のポインターを使用することから、代わりに boost::sharedptr を使用するように切り替えました。ご想像のとおり、これにより、クライアントは誰が何をいつ削除する必要があるかを心配する必要がなくなるという点で、非常に大きなメリットがもたらされました。切り替えを行ったとき、私はそれが正しいことだと信じていましたが、公開インターフェイスにサードパーティのライブラリから何かを含める必要があることに悩まされていました。通常、そのようなことはできれば避けます。私は、boost は事実上 C++ 言語の一部であり、私たちのユース ケースでは、クライアント コードとライブラリの両方がオブジェクトへのポインターを保持する必要があることを合理化しました。しかし最近、クライアントの 1 人から、インターフェイスでニュートラル スマート ポインター クラスを使用するように切り替えることができるかどうか尋ねられました。私たちのライブラリは基本的に特定のバージョンのブーストを強制しているためです。では、どうするのが最善策なのか、今考えています。私はそれについて少し考え、実際のブースト スマート ポインターを単に保持する単純なスマート ポインター クラスを作成することについて疑問に思いました。しかし、クライアントはすぐにそれらの 1 つを自分たちのフレーバーの boost::sharedptr に詰め込み、3 つの共有ポインターの深さになります。これは問題になる場合もあれば、そうでない場合もあります。とにかく、この問題を解決する最善の方法についてコミュニティから意見を聞きたいです。私はそれについて少し考え、実際のブースト スマート ポインターを単に保持する単純なスマート ポインター クラスを作成することについて疑問に思いました。しかし、クライアントはすぐにそれらの 1 つを自分たちのフレーバーの boost::sharedptr に詰め込み、3 つの共有ポインターの深さになります。これは問題になる場合もあれば、そうでない場合もあります。とにかく、この問題を解決する最善の方法についてコミュニティから意見を聞きたいです。私はそれについて少し考え、実際のブースト スマート ポインターを単に保持する単純なスマート ポインター クラスを作成することについて疑問に思いました。しかし、クライアントはすぐにそれらの 1 つを自分たちのフレーバーの boost::sharedptr に詰め込み、3 つの共有ポインターの深さになります。これは問題になる場合もあれば、そうでない場合もあります。とにかく、この問題を解決する最善の方法についてコミュニティから意見を聞きたいです。
編集: 私はもともと所有権の譲渡を言いましたが、API 境界の両側のコードがオブジェクトへのポインターを保持する必要があることを指定する必要がありました。