Powiel możliwe:
How do I call ::std::make_shared on a class with only protected or private constructors?użyciu std :: shared_ptr z chronioną konstruktora destructor
Chcę utworzyć wspólny wskaźnik do klasy i mają metody fabryki, która zwraca to przy zachowaniu chronionego konstruktora \ destruktora. ponieważ współdzielony wskaźnik nie może uzyskać dostępu do konstruktora lub destruktora, otrzymuję błędy kompilatora.
Używam llvm 4.1, ale szukam rozwiązania, które może być niezależne od kompilatora (poza tym, że konstruktor \ destruktor jest publiczny).
to przykładowy kod:
class Foo
{
public:
static std::shared_ptr<Foo> getSharedPointer()
{
return std::make_shared<Foo>();
}
protected:
Foo(int x){}
~Foo(){}
};
jakieś pomysły?
I http://stackoverflow.com/questions/3541632/using-make-shared---protected-constructor-abstract-interface http://stackoverflow.com/questions/7521660/friend-function-of -stdmake-shared http://stackoverflow.com/questions/2590310/can-i-use-boostmake-shared-with-a-private-constructor itp. – interjay
i http://stackoverflow.com/questions/8202530/how -can-i-call-a-private-destructor-from-a-shared-ptr dla problemu destruktora – interjay