将 shared_ptr<Type> 转换为 weak_ptr<void> 并返回
Casting shared_ptr<Type> to weak_ptr<void> and back
如何将 weak_ptr<void>
转换为 shared_ptr<Type>
?
如何锁定 weak_ptr<void>
并最终生成 shared_ptr<Type>
?
Type
有一个非平凡的析构函数,假设 weak_ptr<...>
永远不会调用这个析构函数是否正确?
void weak pointer是我在这种情况下想要的,它仅用于监视多种类型的共享指针的引用计数,并在不拥有该对象的情况下将共享指针分配给现有对象(它是一部分一个对象的多个引用资源管理器)。
How would I get a weak_ptr<void>
to a shared_ptr<Type>
?
std::shared_ptr<Type>
可隐式转换为 std::weak_ptr<void>
.
How would I lock a weak_ptr<void>
and ultimately produce a shared_ptr<Type>
?
调用lock()
得到std::shared_ptr<void>
,然后用std::static_pointer_cast
.
Type
has a non-trivial destructor, is it right to assume weak_ptr<...>
will never call this destructor
是的。每当最后一个 shared_ptr
被销毁时,该对象也被销毁。如果你想让对象保持活动状态,你应该存储 shared_ptr<void>
而不是 weak_ptr<void>
。如果您不想让对象保持活动状态,而只是希望 weak_ptr
始终知道引用计数,那么就没有问题。
如何将 weak_ptr<void>
转换为 shared_ptr<Type>
?
如何锁定 weak_ptr<void>
并最终生成 shared_ptr<Type>
?
Type
有一个非平凡的析构函数,假设 weak_ptr<...>
永远不会调用这个析构函数是否正确?
void weak pointer是我在这种情况下想要的,它仅用于监视多种类型的共享指针的引用计数,并在不拥有该对象的情况下将共享指针分配给现有对象(它是一部分一个对象的多个引用资源管理器)。
How would I get a
weak_ptr<void>
to ashared_ptr<Type>
?
std::shared_ptr<Type>
可隐式转换为 std::weak_ptr<void>
.
How would I lock a
weak_ptr<void>
and ultimately produce ashared_ptr<Type>
?
调用lock()
得到std::shared_ptr<void>
,然后用std::static_pointer_cast
.
Type
has a non-trivial destructor, is it right to assumeweak_ptr<...>
will never call this destructor
是的。每当最后一个 shared_ptr
被销毁时,该对象也被销毁。如果你想让对象保持活动状态,你应该存储 shared_ptr<void>
而不是 weak_ptr<void>
。如果您不想让对象保持活动状态,而只是希望 weak_ptr
始终知道引用计数,那么就没有问题。