開発中のクラス内での削除を防ぐために、生のポインター メンバーをスマート ポインターにラップしたいと思います。ポインターの下のオブジェクトの所有者はクラス外です。だから、似boost::shared_ptr
てstd::auto_ptr
いて合わない。以下は縮小された例です。
class Foo {
boost::weak_ptr<Bar> m_bar;
public:
void setBar(const Bar *bar) { // bar created on heap
m_bar = bar; // naturally compilation error
}
};
もちろん、コンパイルエラーを誘発します。weak_ptr
生のポインターから初期化する正しい方法は何ですか(存在する場合)?