スマートポインターのリストがあります。これらのスマート ポインターの一部を通常のポインターとして機能させたいと考えています。つまり、それらは単にインスタンスへの参照であり、その解放には関与しません。たとえば、スタックに割り当てられたインスタンスを指す場合があります。リスト内の他のスマート ポインターは、通常の boost::shared_ptr として機能する必要があります。
クラスは次のようになります。
template<class T> smart_ptr {
private:
T *p;
boost::shared_ptr<T> sp;
public:
smart_ptr(T *p): p(p), shared(0) { } // p will not be deleted
smart_ptr(boost::shared_ptr<T> &sp): p(sp.get()), sp(sp) { }
T *get() const { return p; }
}
これを行うブースト クラスがある場合は、自分でクラスを作成する代わりにそれを使用することをお勧めします。何もないように見えますが、間違っていますか?