フレームワークをブーストするのは初めてですが、scoped_ptrのオブジェクトがnullかどうかを確認する方法がわかりません。
boost::scoped_ptr<CFoo> cFoo(new CFoo);
if(NULL != cFoo)
{
//todo
}
できるよ
if(cFoo.get() != 0 ) //what you are trying to do
あるいは単に
if(cFoo) // as K-Ballo explains.
で説明されているようにboost::scoped_ptr
変換
operator unspecified-bool-type () const; // never throws
ブールコンテキストで使用される場合、 get()!=0と同等 の不特定の値を返します。
それはするのに十分なはずです:
if( cFoo )
{ ... }
scoped_ptr
nullでない場合に評価されるboolへの安全な暗黙の変換があります。true
「new CFoo
」が失敗すると例外がスローされるので、cFooがnullかどうかを確認する必要はないと思います。あなたの場合new(std::nothrow)
、if (cFoo)
が必要です。