我是新手来提升框架,我不知道如何检查scoped_ptr中的对象是否为空。
boost::scoped_ptr<CFoo> cFoo(new CFoo);
if(NULL != cFoo)
{
//todo
}
答案 0 :(得分:10)
你可以做到
if(cFoo.get() != 0 ) //what you are trying to do
或只是
if(cFoo) // as K-Ballo explains.
所述
<强>转化强>
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)
。