是否有一个boost智能指针类,可以配置为不在删除时删除?

4 c++ boost smart-pointers

我有一个智能指针列表.我希望其中一些智能指针充当常规指针,这意味着它们只是对实例的引用,并且不参与其释放.例如,它们可能指向在堆栈上分配的实例.列表中的其他智能指针应该充当常规的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

(你只想要一个空函数.)

  • 不,删除器不是`shared_ptr`类型的一部分,所以是的,你可以在同一个集合中混合和匹配不同的删除器. (2认同)