c++ - 对象 vector 的某些元素的类型转换

标签 c++ vector type-conversion

我想玩一个对象 vector 。假设我有一个 Base 类和两个派生类:Derived_ADerived_B

class Base{...}; 
class Derived_A: public Base{}; 
class Derived_B: public Base{};

main() 中,我创建了一个包含 10 个类 Derived_A 对象的 vector ,例如:

std::vector < Derived_A > array;
array.reserve(10);

现在,我想做的是从这个 vector 的元素中选择一个(或多个)并将其类型更改为 Derived_B。最后,我将得到一个包含 Derived_A 类的一些元素和 Derived_B 类的一些元素的 vector 。

这可能吗?或者您有更好的方法吗?

最佳答案

不,这没有任何实际意义。 Derived_ADerived_B不兼容;只有 Base每一个的一部分是。

如果你有一个 std::vector<Base*>virtual成员函数,那么您可以 [间接] 存储任一类型的对象,但不要将一个对象强制转换为另一个。

顺便说一句, vector 不是数组,并且std::vector::reserve 不创建元素。它只为它们保留内存空间。你可能是说 std::vector::resize .

关于c++ - 对象 vector 的某些元素的类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026108/

相关文章:

c++ - 是否可以使用 Boost 概念检查库来验证方法返回类型?

c++ - 四舍五入到一个数字的最接近的倍数

mysql - Spring data JPA中将java bean的List<Long>转换为mysql的json

c++ - 从 char 到 TCHAR 的转换中获取奇怪的字符

c++ - 单一模板功能显示不同容器的内容

r - 将列表列表转换为数据框

c++ - 从 bin 文件中读取十六进制数作为每个字符的 2 位数字-c++

c++ - 如何在 Windows 上使用命令行运行 UnitTest++

c++ - vector 声明

c++ - 当 vector 需要更多内存并分配内存时,指针会发生什么变化?