将shared_ptr<Type> 转换为weak_ptr<void> 并返回

Ann*_*inn 3 c++ shared-ptr weak-ptr

我怎样才能得到 aweak_ptr<void>到 a shared_ptr<Type>

我如何锁定 aweak_ptr<void>并最终生成 a shared_ptr<Type>

Type有一个不平凡的析构函数,假设weak_ptr<...>永远不会调用这个析构函数是否正确?

void 弱指针是我在这种情况下想要的,它仅用于监视多种类型的共享指针的引用计数,并给出指向现有对象的共享指针,而本身不拥有该对象(它是一个对象的一部分)参考资源管理器)。

Bri*_*ian 6

我怎样才能得到 aweak_ptr<void>到 a shared_ptr<Type>

std::shared_ptr<Type>可以隐式转换为std::weak_ptr<void>.

我如何锁定 aweak_ptr<void>并最终生成 a 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始终知道引用计数,那么没有问题。