Mögliche Duplizieren: eine Factory-Methode, die zurückgibt
How do I call ::std::make_shared on a class with only protected or private constructors?mit std :: shared_ptr mit einem geschützten Konstruktor destructor
Ich möchte einen gemeinsamen Zeiger auf eine Klasse erstellen, und haben Es bleibt dabei der Konstruktor \ destructor geschützt. Da der gemeinsame Zeiger nicht auf den Konstruktor oder den Destruktor zugreifen kann, erhalte ich Compilerfehler.
Ich benutze llvm 4.1, aber ich bin auf der Suche nach einer Lösung, die Compiler unabhängig sein kann (abgesehen davon, dass der Konstruktor \ destructor public).
dies ist ein Codebeispiel:
class Foo
{
public:
static std::shared_ptr<Foo> getSharedPointer()
{
return std::make_shared<Foo>();
}
protected:
Foo(int x){}
~Foo(){}
};
irgendwelche Ideen?
Und http://stackoverflow.com/questions/3541632/using-make-shared-with-a-protected-constructor-abstract-interface http://stackoverflow.com/questions/7521660/friend-function-of -stdmake-shared http://stackoverflow.com/questions/2590310/cani-i-use-boostmake-shared-with-a-private-constructor etc. – interjay
Und http://stackoverflow.com/questions/8202530/how -can-i-call-a-private-destructor-from-a-shared-ptr für das Destruktor-Problem – interjay