"Destroy()"と "Clone()"メソッドを持つ多相型(つまり、常にポインタで相互作用しています)で作業しています。それをリソースセーフタイプでラップします。ユニーク/ shared_ptrとカスタム演算子=
「Destroy()」が気にしなければならないことがあれば、独自のDeleterでunique_ptrを使うことができました。 ただし、の場合、このリソースハンドルタイプは、別のタイプのメンバーとして使用されます。他のタイプのメンバーとして使用される場合は、デフォルトで生成されたコピーおよび割り当て操作を使用してコピーできます。理想的には、私は既にリソースハンドルのデストラクタをカスタマイズして "Destroy()"を呼び出すのと同じように、リソースハンドルのコピーコンストラクタと割り当てをカスタマイズして "Clone()"を呼び出すことができます。しかし、unique_ptrとshared_ptrに関するドキュメントを見て、私はそれを可能にするものは見ません。
- ドキュメントに何か紛失しましたか?これを行うための既成のstdの方法はありますか?
- そうでない場合は、unique_ptrを拡張してコピー操作をオーバーライドする必要がありますか?
- また、通常のポインタセマンティクスをゼロから自分のリソースハンドルだけで作成する必要がありますか?
encapsulate unique_ptr。 –
'unique_ptr'をいくつかの型でラップし、その型の移動とコピー操作を実装します。移動はデフォルトにすることができ、コピーは 'Clone'を呼び出すでしょう。 –
Praetorian
2つの別々のスマートポインタで管理されている2つの異なるオブジェクトで終了しない限り、本当に 'Clone()'を呼びたくはないと思います。 – Galik