Tal*_*eed 4 c++ polymorphism vector static-cast reinterpret-cast
是否有可能投出std::vector<std::shared_ptr<Object>>
到std::vector<std::shared_ptr<SpecializedObject>>
那里SpecializedObject
继承Object
,无需建立一个新的数组(或通过矢量迭代)?
简答:不.
答案很长:
std::vector<std::shared_ptr<Object>>
并且std::vector<std::shared_ptr<SpecializedObject>>
是完全不同且无关的野兽,你不能从一种类型转换为另一种类型.
您必须遍历该向量并从中创建一个新向量.
提示:你仍然可以static_pointer_cast
在迭代时使用指针来投射(当然你知道自己在做什么).