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; ?????
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; ?????
すでに述べたように
boost::shared_ptr<Type> ptr = weak_ptr.lock();
例外が必要ない場合、または単にキャスト コンストラクターを使用する場合
boost::shared_ptr<Type> ptr(weak_ptr);
これは、ウィーク ポインターが既に削除されている場合にスローされます。
そもそも使用の目的全体を無効にするため、 aweak_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
}
boost::shared_ptr<Type> ptr = weak_ptr.lock(); // weak_ptr being boost::weak_ptr<Type>