2010-12-20 85 views
10

假設我有類像默認值::在類的構造函數的shared_ptr

class A{ 
    public: 
    A(int a, boost::shared_ptr<int> ptr){ 
     // whatever! 
    } 
}; 

我的問題是,什麼是該PTR的默認值?我希望能夠創建使用類的一個實例

A myA(5); 

當然我知道我可以創建一個只有一個參數另一個構造函數,但是我正在尋找類似

A(int a, boost::shared_ptr<int> ptr = WAT?) 

可能嗎?目前我正在使用兩種構造方法,但這樣做會很好。

回答

11
#include <boost/make_shared.hpp> 

A(int a, boost::shared_ptr<int> ptr = boost::make_shared<int>()) 

檢查http://www.boost.org/doc/libs/1_43_0/libs/smart_ptr/make_shared.html

+0

謝謝您的回答。我沒有試過這樣使用make_shared,儘管我在從其他地方調用構造函數時使用它。然而,將「ptr」設置爲默認值而不是給它一個虛擬值是非常好的,因爲我不是完全使用整數,而是一個完整的類。 – 2010-12-20 02:36:01

+0

你可以調用它沒有虛擬值,我只是使用一個例子。 – OneOfOne 2010-12-20 13:09:41

3

我終於找到了here,我可以使用共享指針的默認構造函數是這樣的:

A(int a, boost::shared_ptr<int> ptr = boost::shared_ptr<int>())