2010-12-20 13 views
10

Załóżmy, że mam klasy jakWartość domyślna dla boost :: shared_ptr na konstruktora klasy

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

Moje pytanie brzmi, co jest wartością domyślną dla tego ptr? Chciałbym, aby móc utworzyć wystąpienie tej klasy, stosując

A myA(5); 

Oczywiście wiem mogę utworzyć inny konstruktor z jednym parametrem, ale szukam czegoś jak

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

Czy to możliwe? Obecnie używam sposobu dwóch konstruktorów, ale byłoby wspaniale zrobić to w ten sposób.

Odpowiedz

11
#include <boost/make_shared.hpp> 

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

Sprawdź http://www.boost.org/doc/libs/1_43_0/libs/smart_ptr/make_shared.html

+0

Dzięki za odpowiedź. Nie próbowałem używać make_shared w ten sposób, mimo że używałem go podczas wywoływania tego konstruktora z innych miejsc. Jednak byłoby wspaniale mieć to "ptr" w jego domyślnej wartości, zamiast dawać mu fałszywą wartość, ponieważ nie używam dokładnie liczby całkowitej, ale pełnoprawnej klasy. –

+0

Możesz wywołać to bez wartości dummy, użyłem tylko przykładu. – OneOfOne

3

końcu znalazłem go here mogę używać domyślnego konstruktora udostępnionej kursora, jest tak:

A(int a, boost::shared_ptr<int> ptr = boost::shared_ptr<int>()) 
Powiązane problemy