[再発明] ディープコピーを行うスマートポインタ
C++ の標準ライブラリには std::auto_ptr がありますし、TR1 や次期標準規格である C++1x には std::tr1::shared_ptr あるいは std::shared_ptr があるわけですが、Pimpl イディオムを実装する場合など、単純なディープコピーを行ってくれるスマートポインタがあると便利です。『Modern C++ Design―ジェネリック・プログラミングおよびデザイン・パターンを利用するための究極のテンプレート活用術』に登場する Loki というライブラリには、さまざまな振る舞いをポリシーで指定できる SmartPtr クラステンプレートが紹介されていますが、お手軽さに欠けますので、今回は単機能の deepcopy_ptr クラステンプレートを作ってみました。
使い方は簡単で、ヘッダファイル deepcopy_ptr.hpp をインクルードするだけでかまいません。ライブラリファイルをリンクする必要はありません。deepcopy_ptr クラステンプレート自体は、auto_ptr や shared_ptr とほぼ同様の使い方ができます。もちろん、コンテナの要素にすることも可能です。
トラックバック
URL から "-nospam" を削除してトラックバックを送信してください。
| 添付 | サイズ |
|---|---|
| deepcopy_ptr.hpp | 2.7 KB |


コピーコンストラクタの ptr_ != 0 は、
コピーコンストラクタの ptr_ != 0 は、 other.ptr_ != 0 では?
コメントありがとうございます。 ご指摘のとお
コメントありがとうございます。
ご指摘のとおり間違いです。修正しておきました。