C++ 将共享_ptr铸造到弱_ptr和背面

C++ 将共享_ptr铸造到弱_ptr和背面,c++,shared-ptr,weak-ptr,C++,Shared Ptr,Weak Ptr,如何将弱ptr转换为共享ptr 如何锁定弱的\u ptr并最终生成共享的\u ptr 类型有一个非平凡的析构函数,假设weak_ptr永远不会调用这个析构函数是否正确 在本例中,void弱指针是我想要的,它仅用于标记多类型共享指针的引用计数,并向现有对象发出共享指针,而自身不拥有该对象。它是单对象多引用资源管理器的一部分 如何将弱ptr转换为共享ptr std::shared_ptr可隐式转换为std::weak_ptr 如何锁定弱的\u ptr并最终生成共享的\u ptr 调用lock获取st

如何将弱ptr转换为共享ptr

如何锁定弱的\u ptr并最终生成共享的\u ptr

类型有一个非平凡的析构函数,假设weak_ptr永远不会调用这个析构函数是否正确

在本例中,void弱指针是我想要的,它仅用于标记多类型共享指针的引用计数,并向现有对象发出共享指针,而自身不拥有该对象。它是单对象多引用资源管理器的一部分

如何将弱ptr转换为共享ptr

std::shared_ptr可隐式转换为std::weak_ptr

如何锁定弱的\u ptr并最终生成共享的\u ptr

调用lock获取std::shared\u ptr,然后使用std::static\u pointer\u cast

类型有一个非平凡的析构函数,假设弱ptr永远不会调用这个析构函数对吗


对。无论何时销毁最后一个共享的_ptr,都会销毁该对象。如果要使对象保持活动状态,应该存储共享的\u ptr而不是弱的\u ptr。如果您不想让对象保持活动状态,但只想让弱ptr始终知道引用计数,那么就没有问题。

可能是其中一种类型转换:不清楚您对析构函数的确切要求。您是否在问销毁弱\u ptr是否可以销毁共享对象?或者到底是什么?@DavidSchwartz-是的。不应该,因为它对它没有所有权,但我想问清楚。如果它使问题变得混乱,我可以省略它;foo是一个弱ptr,在某些情况下可以调用析构函数,因为它创建并销毁一个共享ptr。@DavidSchwartz但这不是弱ptr本身销毁对象,而是生成的共享ptr执行其工作,在对象的所有引用都消失时销毁对象。所以没有问题,因为没有人会在意。