我想玩一个对象 vector 。假设我有一个 Base
类和两个派生类:Derived_A
和 Derived_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_A
和 Derived_B
不兼容;只有 Base
每一个的一部分是。
如果你有一个 std::vector<Base*>
和 virtual
成员函数,那么您可以 [间接] 存储任一类型的对象,但不要将一个对象强制转换为另一个。
顺便说一句, vector 不是数组,并且std::vector::reserve
不创建元素。它只为它们保留内存空间。你可能是说 std::vector::resize
.
关于c++ - 对象 vector 的某些元素的类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026108/