Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何返回null tr1::shared_ptr并测试它是否为null_C++_Smart Pointers - Fatal编程技术网

C++ 如何返回null tr1::shared_ptr并测试它是否为null

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在您的示例中是私有的。你应该把它

我有一个带有以下签名的函数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在您的示例中是私有的。你应该把它修好

要返回空指针,请执行以下操作:

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 */ }
}