首页 > 解决方案 > 使用工厂函数创建 std::shared_ptr

问题描述

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

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

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

使用工厂时如何实现相同的目标?

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

标签: c++factorysmart-pointers

解决方案


如果Foo该类具有复制或右值构造函数重载(隐式或显式),那么您可以将其用作:

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

推荐阅读