使用工厂函数创建 std::shared_ptr

Create std::shared_ptr using factory function

我有一个 class Foo 它不是直接实例化而是通过静态工厂方法 Foo Foo::create_foo().

现在我想创建一个 std::shared_ptr<Foo>。通常我会使用

auto ptr = std::make_shared<Foo>();

我怎样才能在使用工厂的同时达到同样的效果?

我知道我可以重写create_foo()直接return一个指针,但我想知道是否有不改变方法的解决方案。

如果 Foo class 有复制或 rvalue-constructor 重载(隐式或显式),那么您可以将其用作:

auto foo = std::make_shared<Foo>(Foo::create_foo());