2010-12-20 15 views
10

私が持っていると仮定し、クラス デフォルト値は::クラスのコンストラクタでのshared_ptr

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

のような私の質問は、そのPTRのデフォルト値は何ですか?私は確かに私はただ一つのパラメータで別のコンストラクタを作成することができます知っているが、私は

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

のようなものを探しています

A myA(5); 

を使用して、そのクラスのインスタンスを作成できるようにしたいのですが出来ますか?現在、私は2コンストラクタの方法を使用していますが、このようにするのは素晴らしいことです。

答えて

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"をデフォルト値にするのは、ダミー値を与えるのではなく、整数を使うのではなく、本格的なクラスであるためです。 –

+0

ダミー値なしで呼び出すことができます。例を使用していました。 – OneOfOne

3

私は最終的にそれhere見つけ、私はこのような共有ポインタのデフォルトコンストラクタを使用することができます。あなたの答えのための

A(int a, boost::shared_ptr<int> ptr = boost::shared_ptr<int>()) 
関連する問題