如何将 boost::weak_ptr 转换为 boost::shared_ptr
我有一个shared_ptr和一个weak_ptr
typedef boost::weak_ptr<classname> classnamePtr;
typedef boost::shared_ptr<x> xPtr;
如何将weak_ptr转换为shared_ptr
shared_ptr = weak_ptr;
Xptr = classnameptr; ?????
i have a shared_ptr and a weak_ptr
typedef boost::weak_ptr<classname> classnamePtr;
typedef boost::shared_ptr<x> xPtr;
how to convert a weak_ptr to a shared_ptr
shared_ptr = weak_ptr;
Xptr = classnameptr; ?????
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
正如已经说过的,
如果您不希望出现异常或只是使用强制转换构造函数,
那么如果弱指针已被删除,则会抛出异常。
As already said
If you do not want an exception or simply use the cast constructor
This will throw if the weak pointer is already deleted.
您不要将
weak_ptr
转换为shared_ptr
,因为这会破坏使用weak_ptr
的初衷。要从
weak_ptr
的实例获取shared_ptr
,请在weak_ptr
上调用lock
。通常您会执行以下操作:
You don't convert a
weak_ptr
to ashared_ptr
as that would defeat the whole purpose of usingweak_ptr
in the first place.To obtain a
shared_ptr
from an instance of aweak_ptr
, calllock
on theweak_ptr
.Usually you would do the following: