Pin*_*nky 4 c++ boost boost-smart-ptr
我有一个shared_ptr和一个weak_ptr
typedef boost::weak_ptr<classname> classnamePtr;
typedef boost::shared_ptr<x> xPtr;
Run Code Online (Sandbox Code Playgroud)
如何将weak_ptr转换为shared_ptr
shared_ptr = weak_ptr;
Xptr = classnameptr; ?????
Run Code Online (Sandbox Code Playgroud)
如前所述
boost::shared_ptr<Type> ptr = weak_ptr.lock();
Run Code Online (Sandbox Code Playgroud)
如果您不想要异常或只是使用强制转换构造函数
boost::shared_ptr<Type> ptr(weak_ptr);
Run Code Online (Sandbox Code Playgroud)
如果弱指针已被删除,则抛出此值.
您不会将a转换weak_ptr为a,shared_ptr因为它首先会破坏使用的全部目的weak_ptr.
要获得shared_ptr从的一个实例weak_ptr,调用lock上weak_ptr.
通常你会做以下事情:
weak_ptr<foo> wp = ...;
if (shared_ptr<foo> sp = wp.lock())
{
// safe to use sp
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5924 次 |
| 最近记录: |