boost :: weak_ptr与自定义删除器的交互

时间:2010-09-01 06:07:55

标签: c++ boost shared-ptr weak-ptr

我有boost::shared_ptr附加了自定义删除工具。将此转换为weak_ptr是否删除了删除信息?如果是,我如何将同一个删除器重新附加到从shared_ptr方法获取的weak_ptr::lock() - ?

我正在实现的功能是weak_ptr的容器 - 指向某种类型的活动实例。我需要自定义删除器来删除正在删除的对象的容器条目。

1 个答案:

答案 0 :(得分:2)

不,自定义删除器永远不会丢失。

当您lock() weak_ptr时,您使用相同的自定义删除工具(以及其他属性)重新获得shared_ptr用于创建weak_ptr的自定义删除工具第一名。

但是,如果shared_ptr再次引用weak_ptr,则lock()将失败并返回空shared_ptr

也就是说,您不必关心自定义删除器。如果您在shared_ptr创建时指定了它,则会在最后一个相关的shared_ptr被释放时调用它。