我如何将weak_ptr<void>
变成shared_ptr<Type>
?
我如何锁定weak_ptr<void>
并最终产生一个shared_ptr<Type>
?
Type
具有非平凡的析构函数,是否假设weak_ptr<...>
永远不会调用此析构函数?
在这种情况下,我想要的是虚弱弱指针,它仅用于保持对多个类型的共享指针的引用计数的制表符,并给出对现有对象的共享指针,而无需自己拥有该对象(它是对象的一部分)。一个对象,许多引用资源管理器)。
答案 0 :(得分:4)
我如何将
weak_ptr<void>
变成shared_ptr<Type>
?
std::shared_ptr<Type>
可隐式转换为std::weak_ptr<void>
。
我如何锁定
weak_ptr<void>
并最终产生一个shared_ptr<Type>
?
致电lock()
以获得std::shared_ptr<void>
,然后使用std::static_pointer_cast
。
Type
具有非平凡的析构函数,假设weak_ptr<...>
永远不会调用此析构函数
是的。每当最后一个shared_ptr
被销毁时,该对象就会被销毁。如果要使对象保持活动状态,则应该存储shared_ptr<void>
而不是weak_ptr<void>
。如果您不想让该对象保持活动状态,而只希望weak_ptr
始终知道引用计数,那么就没有问题。