是否可以转换 std::vector<std::shared_ptr<Object>>
到std::vector<std::shared_ptr<SpecializedObject>>
其中 SpecializedObject
继承Object
,而不构建新数组(或遍历 vector )?
最佳答案
简短的回答:没有。
长答案:
std::vector<std::shared_ptr<Object>>
和 std::vector<std::shared_ptr<SpecializedObject>>
是完全不同且无关的野兽,你不能从一种类型转换为另一种类型。
您必须遍历 vector 并从中创建一个新 vector 。
提示:您仍然可以使用 static_pointer_cast
在迭代时转换指针(当然,如果您知道自己在做什么)。
关于c++ - 转换整个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908850/