[再発明] ディープコピーを行うスマートポインタ

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.hpp2.7 KB

コピーコンストラクタの ptr_ != 0 は、

コピーコンストラクタの ptr_ != 0 は、 other.ptr_ != 0 では?

コメントありがとうございます。 ご指摘のとお

コメントありがとうございます。
ご指摘のとおり間違いです。修正しておきました。

このエントリーを含むはてなブックマーク