考虑以下代码,我想将A
对象的创建委托给名为make
的方法,以允许该类的用户仅创建包裹在{中的实例{1}}:
std::shared_ptr
我本来以为,因为#include <memory>
class A {
private:
A() {}
public:
static std::shared_ptr<A> make() {
return std::make_shared<A>();
}
};
int main() {
std::shared_ptr<A> a = A::make();
return 0;
}
是成员函数,所以将允许它访问私有构造函数,但显然并非如此。编译程序失败,并在make
的源中显示以下消息:
std::shared_ptr
我该如何解决这个问题?
答案 0 :(得分:0)
class A {
private:
A() {}
public:
static std::shared_ptr<A> make() {
return std::shared_ptr<A>(new A());
}
};