c++ - 返回 std::shared_ptr来自 std::shared_ptr 的向量
问题描述
我有一个 std::vector
其中shared_ptr<Base>
包含许多shared_ptr<Derived>
对象。作为 的一个属性,由于各种原因Base
,每个对象都有一个string
名称。我有一个函数std::shared_ptr<Base> GetObjectByName(const char* name)
,我希望能够通过评估其名称是否是我正在寻找的对象来返回派生组件。std::shared_ptr<Derived>
从 _std::vector<std::shared_ptr<Base>>
解决方案
假设Base
andDerived
是多态的(即至少有一个虚函数),你可以使用std::dynamic_pointer_cast
:
std::shared_ptr<Base> pBase = GetObjectByName("name");
std::shared_ptr<Derived> pDerived = std::dynamic_pointer_cast<Derived>(pBase);
推荐阅读
- ios - 将图像大小减小到最大 100 kb,并在 iOS 中固定尺寸为 512x512
- javascript - 从 Ruby on Rails 输出哈希数组到 chart.js
- python - 导入类时未定义 NameError DataFrame
- java - 对于 commn-service 中存在的类,微服务项目在 mvn 包中找不到类
- node.js - 将集合加入到现有的聚合查询 mongodb
- python - 什么是“一次性完成”?
- java - 如何使 Map 的专业化不可修改?
- macos - 带有 $npm_package 的 npm 脚本在文件夹中,路径中有空格
- python - 从 pandas DataFrame 或 Series 插值到新的 DatetimeIndex
- java - 如何修复 nextLine 错误以便打印两个单词?