败犬日报 2025-08-16
std::make_shared 不能用私有构造函数(更新) 往期提到过,但只说了“没什么好做法,只能 std::shared_ptr<T>{new T}”。
事实上用 static 成员函数封装一下就是最佳实践,这个函数当成 make_shared 理解就好接受了,代码如下:
class Foo {
private:
Foo() {}
public:
static std::shared_ptr<Foo> createInstance() {
return std::shared_ptr<Foo>(new Foo());
}
};