c++ - 使用工厂函数创建 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());
推荐阅读
- swiftui - onHover 没有响应 onHover 动作
- python - 如何使用循环同时影响多个数据帧
- javascript - 如何修复在 HTML、CSS、JS 中执行 JS 脚本后悬停不起作用?
- google-cloud-platform - Google Cloud Pub/Sub - 捕获发送到死信主题的消息的消息传递失败原因
- java - 在 Spring Boot 应用程序中实例化 @Service @Transactional 类的多个 bean
- ruby-on-rails - Puma 的表现没有优于 Unicorn(Rails 5.0 应用程序)——这正常吗?
- node.js - Certbot 在证书生成后不提供挑战
- r - R中没有替换的多个样本
- bash - 将运行时变量传递到 bash 脚本中,该脚本执行 ssh 到远程服务器
- php - Laravel 使用语言环境参数返回主页