0

私が理解しているように、boost::scoped_ptr メンバー変数を持つクラスがあり、そのクラスのインスタンスをコピーし、新しいインスタンスにその scoped_ptr メンバーが最初のもののコピーを指すようにしたい場合インスタンスが指している場合、カスタム コピー コンストラクター (および代入演算子) を実装し、scoped_ptr が指すものすべてを明示的にディープ コピーする必要があります。スマート ポインター型に、これ自体を行うコピー コンストラクターがあれば、すばらしいことです。

スマート ポインターがコピーされると、それが指すオブジェクトもコピーされるように、ディープ コピー機能が既に組み込まれている C++ ブースト/stl ライブラリに同様のスマート ポインターはありませんか? 少なくともオプションとして?

(そのようなポインターがあった場合、私の場合、指しているオブジェクトは仮想 Clone() 関数を使用してポリモーフィック クラスであるため、ポインターは新しいオブジェクトを作成する方法についてもう少し知る必要があります。スマート ポインターができた場合ディープ コピーの方法を暗示的に理解するのではなく、クライアント コードが関数ポインタまたは Clone 関数を指す何かを提供している可能性があります。または、ファクトリ作成関数を使用する必要があります。結局、ポインターにディープコピー機能がない理由..?)

4

1 に答える 1

4

私の知る限り、標準ライブラリには、必要なセマンティクスを実装するスマート ポインターはありません。

ただし、MNMLSTC コアライブラリは、とりわけ、ユース ケースに適合する 2 つのスマート ポインター (core::poly_ptrcore::deep_ptr) を提供します。特に、仮想メンバー関数が存在するため、core::poly_ptr必要なものだと思います。

于 2016-07-27T07:22:14.010 に答える