我有boost::shared_ptr
附加了自定义删除工具。将此转换为weak_ptr
是否删除了删除信息?如果是,我如何将同一个删除器重新附加到从shared_ptr
方法获取的weak_ptr::lock()
- ?
我正在实现的功能是weak_ptr
的容器 - 指向某种类型的活动实例。我需要自定义删除器来删除正在删除的对象的容器条目。
答案 0 :(得分:2)
不,自定义删除器永远不会丢失。
当您lock()
weak_ptr
时,您使用相同的自定义删除工具(以及其他属性)重新获得shared_ptr
用于创建weak_ptr
的自定义删除工具第一名。
但是,如果shared_ptr
再次引用weak_ptr
,则lock()
将失败并返回空shared_ptr
。
也就是说,您不必关心自定义删除器。如果您在shared_ptr
创建时指定了它,则会在最后一个相关的shared_ptr
被释放时调用它。