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



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

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

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

如何在使用工厂时实现相同的效果?

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

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

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

相关内容

  • 没有找到相关文章

最新更新