C++ 如何返回null tr1::shared_ptr并测试它是否为null
我有一个带有以下签名的函数getA:C++ 如何返回null tr1::shared_ptr并测试它是否为null,c++,smart-pointers,C++,Smart Pointers,我有一个带有以下签名的函数getA: class A { public: typedef std::tr1::shared_ptr <A> Ptr; //other member functions.... }; class B { public: A::Ptr getA(); }; 在相同的情况下,我想在getA中返回一个空指针;另外,作为类B的用户,我需要在使用它之前测试getA的返回值是否为null。我该怎么做 注意,A::Ptr在您的示例中是私有的。你应该把它
class A {
public:
typedef std::tr1::shared_ptr <A> Ptr;
//other member functions....
};
class B {
public:
A::Ptr getA();
};
在相同的情况下,我想在getA中返回一个空指针;另外,作为类B的用户,我需要在使用它之前测试getA的返回值是否为null。我该怎么做 注意,A::Ptr在您的示例中是私有的。你应该把它修好
要返回空指针,请执行以下操作:
A::Ptr B::getA()
{
// ...
if ( something ) return A::Ptr(); // return empty shared_ptr
else return something_else;
}
要检查它,请执行以下操作:
int test()
{
B b;
A::Ptr p = b.getA(); // getA is private too, but suppose it will not
if ( p ) { /* do something */ }
}