问题描述
我有一个类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());