c++ - 转换整个 vector

标签 c++ vector polymorphism reinterpret-cast static-cast

是否可以转换 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/

相关文章:

c++ - std::vector - 如何释放 vector 中 char* 元素的内存?

C++: boost::fusion::for_each 对于许多序列

c++ - 当我从类成员函数返回 *this 时,为什么会调用我的复制构造函数?

c++ - 重载一元运算符 & 是否有意义?

c++ - 在派生构造函数中调用基方法的坏习惯?

c++ - 在递归/另一个函数中返回静态/普通数组

c++ - 在类函数中访问 vector 的元素

java - 在不违反 SOLID 原则的情况下使用具有不同方法名称的子类

c++ - C++ 中的多态加号?

c++ - 智能指针和 dynamic_cast