我有一个带有以下签名的函数getA()
:
class A {
public:
typedef std::tr1::shared_ptr <A> Ptr;
//other member functions....
};
class B {
public:
A::Ptr getA();
};
并且,我希望在同一情况下在getA()
中返回一个空指针;此外,作为Class B
的用户,我需要在使用它之前测试getA()
的返回值是否为null。我该怎么办?
答案 0 :(得分:5)
请注意,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 */ }
}