我有一个智能指针列表。我希望其中一些智能指针充当常规指针,这意味着它们只是对实例的引用,不参与其释放。例如,它们可能指向堆栈上分配的实例。列表中的其他智能指针应充当常规 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; }
}
如果有一个 boost 类可以做到这一点,我宁愿使用它而不是自己编写一个类。似乎没有,还是我弄错了?