NULL检查boost :: scoped_ptr

dom*_*lao 2 c++ boost

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

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

if(NULL != cFoo)
{
    //todo
}
Run Code Online (Sandbox Code Playgroud)

Kar*_*k T 10

你可以做

if(cFoo.get() != 0 ) //what you are trying to do
Run Code Online (Sandbox Code Playgroud)

要不就

if(cFoo) // as K-Ballo explains.
Run Code Online (Sandbox Code Playgroud)

正如在解释 boost::scoped_ptr

转换

operator unspecified-bool-type () const; // never throws
返回一个未指定的值,当在布尔上下文中使用时,它等效于get()!= 0.


K-b*_*llo 5

它应该足够了:

if( cFoo )
{ ... }
Run Code Online (Sandbox Code Playgroud)

scoped_ptr有一个安全的隐式转换为bool,它将true在其非空时进行求值.

  • 此外,`cFoo`在发布的片段中永远不会为null,因为如果分配失败,则会抛出`new`. (2认同)