<分区>
Possible Duplicate:
How do I call ::std::make_shared on a class with only protected or private constructors?
我想创建一个指向类的共享指针,并有一个返回它的工厂方法,同时保护构造函数/析构函数。由于共享指针无法访问构造函数或析构函数,因此出现编译错误。
我正在使用 llvm 4.1,但我正在寻找一种可以独立于编译器的解决方案(除了公开构造函数\析构函数之外)。
这是一个代码示例:
class Foo
{
public:
static std::shared_ptr<Foo> getSharedPointer()
{
return std::make_shared<Foo>();
}
protected:
Foo(int x){}
~Foo(){}
};
有什么想法吗?