したがって、私は boost::shared_ptr を使用して、それが提供するさまざまな参照カウントの利点をすべて提供します。初心者向けの参照カウントはもちろんですが、コピー、割り当て、および STL コンテナーへの保存も可能です。
問題は、それを 1 つの「悪意のある」関数またはオブジェクトに渡すと、そのオブジェクトが ptr を保存できるため、外部関数またはオブジェクトがその所有権を適切に放棄しない限り、その割り当てを解除できないことです。
最終的に、私はオブジェクトの所有権を明示的に保つようにしています。これを実現するには、所有者にオブジェクトへの shared_ptr のみを保持させ、「ゲスト」オブジェクトはそのオブジェクトへの weak_ptr のみを保存します。
私は本当にshared_ptrの「共有」部分を望んでいませんが、weak_ptrsを作成するにはshared_ptrを使用する必要があります。scoped_ptrを使いたいのですが、コピーできないので非常に限られています。コンテナーに格納することも、weak_ptrs を貸し出すことも、新しいマネージャーに所有権を譲渡することもできません。
解決策は何ですか?