3

我有一个boost::shared_ptr附加的自定义删除器。将其转换weak_ptr为删除器信息时是否丢失?如果是,我如何将相同的删除器重新附加到shared_ptrweak_ptr::lock()方法获取的 -s ?

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

4

1 回答 1

3

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

当您使用与您最初用于创建 from 的自定义删除器(和其他属性)相同的自定义删除器(和其他属性)时,lock()您将weak_ptr重新获得一个。shared_ptrweak_ptr

但是,如果不再shared_ptr引用您weak_ptr的,lock()则将失败并返回 null shared_ptr

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

于 2010-09-01T06:32:09.480 回答