3

フレームワークをブーストするのは初めてですが、scoped_ptrのオブジェクトがnullかどうかを確認する方法がわかりません。

boost::scoped_ptr<CFoo> cFoo(new CFoo);

if(NULL != cFoo)
{
    //todo
}
4

3 に答える 3

10

できるよ

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と同等 の不特定の値を返します。

于 2013-01-17T04:50:42.380 に答える
5

それはするのに十分なはずです:

if( cFoo )
{ ... }

scoped_ptrnullでない場合に評価されるboolへの安全な暗黙の変換があります。true

于 2013-01-17T04:47:28.420 に答える
0

new CFoo」が失敗すると例外がスローされるので、cFooがnullかどうかを確認する必要はないと思います。あなたの場合new(std::nothrow)if (cFoo)が必要です。

于 2018-04-19T07:42:11.660 に答える