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