返回std :: shared_ptr 从std :: shared_ptr ]的向量返回 我有一个std::vector的shared_ptr<Base>,其中包含许多shared_ptr<Derived>对象。作为Base的属性,由于各种原因,每个对象都有一个string name。我有一个函数std::shared_ptr<Base> GetObjectByName(const char* name),在其中我希望能够通过评估其名称是否是Im寻找的对象来返回派生组件。从std::shared_ptr<Derived> 中获得std::vector<std::shared_ptr<Base>>的最佳方法是什么?我有一个shared_ptr 的std :: vector,其中包含许多shared_ptr 对象。作为Base的属性,由于各种原因,每个对象都有一个字符串名称。我有一个函数std :: ......> ] 假设Base和Derived是多态的(即至少具有一个虚函数),则可以使用std::dynamic_pointer_cast: std::dynamic_pointer_cast

问题描述 投票:0回答:1
我有一个std::vectorshared_ptr<Base>,其中包含许多shared_ptr<Derived>对象。作为Base的属性,由于各种原因,每个对象都有一个string

name。我有一个函数std::shared_ptr<Base> GetObjectByName(const char* name),在其中我希望能够通过评估其名称是否是Im寻找的对象来返回派生组件。从std::shared_ptr<Derived>

中获得std::vector<std::shared_ptr<Base>>的最佳方法是什么?我有一个shared_ptr

的std :: vector,其中包含许多shared_ptr 对象。作为Base的属性,由于各种原因,每个对象都有一个字符串名称。我有一个函数std :: ......>

]
c++ c++11 stl
1个回答
0
投票
假设BaseDerived是多态的(即至少具有一个虚函数),则可以使用std::dynamic_pointer_cast

std::dynamic_pointer_cast

© www.soinside.com 2019 - 2024. All rights reserved.