首页 > 解决方案 > 返回 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>>

标签: c++c++11stl

解决方案


假设BaseandDerived是多态的(即至少有一个虚函数),你可以使用std::dynamic_pointer_cast

std::shared_ptr<Base> pBase = GetObjectByName("name");
std::shared_ptr<Derived> pDerived = std::dynamic_pointer_cast<Derived>(pBase);

推荐阅读