Skip to content

败犬日报 2025-08-16

1. 成员函数里的 std::make_shared 不能用私有构造函数(更新)

往期提到过,但只说了“没什么好做法,只能 std::shared_ptr<T>{new T}”。

事实上用 static 成员函数封装一下就是最佳实践,这个函数当成 make_shared 理解就好接受了,代码如下:

cpp
class Foo {
private:
    Foo() {}

public:
    static std::shared_ptr<Foo> createInstance() {
        return std::shared_ptr<Foo>(new Foo());
    }
};