2010-09-01 128 views
2

我有一個函數getA()具有以下簽名返回一個空TR1 :: shared_ptr的和測試:如何,如果它是空

class A { 
public: 
typedef std::tr1::shared_ptr <A> Ptr; 
//other member functions.... 
}; 

class B { 
public: 
A::Ptr getA(); 
}; 

而且,我想在同一案件中getA()返回一個空指針;另外,作爲Class B的用戶,我需要在使用它之前測試返回值getA()是否爲空。我應該怎麼做?

回答

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 */ } 
} 
相關問題