thể trùng lặp:
How do I call ::std::make_shared on a class with only protected or private constructors?using std :: shared_ptr với một constructor destructor bảo vệ
Tôi muốn tạo ra một con trỏ chia sẻ cho một lớp học, và có một phương pháp nhà máy trả về nó trong khi vẫn giữ bảo vệ constructor \ destructor. kể từ khi con trỏ được chia sẻ không thể truy cập vào constructor hoặc destructor, tôi nhận được các lỗi trình biên dịch.
Tôi đang sử dụng llvm 4.1, nhưng tôi đang tìm một giải pháp có thể là trình biên dịch độc lập (bên cạnh việc tạo công cụ \ constructor \ destructor).
đây là một mẫu mã:
class Foo
{
public:
static std::shared_ptr<Foo> getSharedPointer()
{
return std::make_shared<Foo>();
}
protected:
Foo(int x){}
~Foo(){}
};
bất kỳ ý tưởng?
Và 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/can-i-use-boostmake-shared-with-a-private-constructor, v.v. – interjay
Và http://stackoverflow.com/questions/8202530/how -can-i-call-a-private-destructor-from-a-shared-ptr cho vấn đề destructor – interjay