使用工厂函数创建 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());
我有一个 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());