2010-12-20 15 views
10

Angenommen, ich habe Klasse wieStandardwert für boost :: shared_ptr auf Klassenkonstruktors

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

Meine Frage ist, was ist der Standardwert für diese ptr? Ich möchte in der Lage sein, eine Instanz dieser Klasse mit erstellen

A myA(5); 

Klar, ich weiß, dass ich mit nur einem Parameter anderen Konstruktor erstellen könnte, aber ich bin auf der Suche nach so etwas wie

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

Ist es möglich? Momentan verwende ich den Zwei-Konstruktoren-Weg, aber es wäre großartig, es so zu machen.

Antwort

11
#include <boost/make_shared.hpp> 

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

prüfen http://www.boost.org/doc/libs/1_43_0/libs/smart_ptr/make_shared.html

+0

Vielen Dank für Ihre Antwort. Ich habe nicht versucht, make_shared auf diese Weise zu benutzen, obwohl ich es benutzt habe, wenn ich diesen Konstruktor von anderen Orten aufgerufen habe. Es wäre jedoch großartig, wenn "ptr" in seinem Standardwert wäre, anstatt einen Dummy-Wert anzugeben, weil ich nicht genau eine ganze Zahl, sondern eine vollwertige Klasse verwende. –

+0

Sie können es ohne den Dummy-Wert aufrufen, ich habe nur ein Beispiel verwendet. – OneOfOne

3

Schließlich fand ich es here, kann ich den gemeinsamen Zeiger wie diese Standardkonstruktors verwenden:

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