我有一个智能指针列表.我希望其中一些智能指针充当常规指针,这意味着它们只是对实例的引用,并且不参与其释放.例如,它们可能指向在堆栈上分配的实例.列表中的其他智能指针应该充当常规的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; }
}
Run Code Online (Sandbox Code Playgroud)
如果有一个提升类可以做到这一点,我宁愿使用它而不是自己写一个类.似乎没有,或者我错了?
Sam*_*ell 13
一个构造函数用于shared_ptr获取析构函数方法,您可以传入一个空的仿函数.
在boost :: shared_ptr中使用Custom Deallocator
(你只想要一个空函数.)