NULL检查boost :: scoped_ptr

时间:2013-01-17 04:46:47

标签: c++ boost

我是新手来提升框架,我不知道如何检查scoped_ptr中的对象是否为空。

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

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

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分:5)

这应该足够了:

if( cFoo )
{ ... }

scoped_ptr有一个安全隐式转换为 bool ,当它不为空时将评估为true

答案 2 :(得分:0)

当“new CFoo”失败时,它会抛出异常,所以我认为你不需要检查cFoo是否为空。 如果您new(std::nothrow),则需要if (cFoo)