【发布时间】:2014-01-09 16:42:31
【问题描述】:
我想玩一个对象向量。假设我有一个 Base 类和两个派生类:Derived_A 和 Derived_B。
class Base{...};
class Derived_A: public Base{};
class Derived_B: public Base{};
在 main() 中,我创建了一个包含 10 个 Derived_A 类对象的向量,例如:
std::vector < Derived_A > array;
array.reserve(10);
现在,我想做的是从这个向量的元素中,选择一个(或几个)并将其类型更改为Derived_B。最后,我将得到一个包含 Derived_A 类的一些元素和 Derived_B 类的一些元素的向量。
这可能吗?或者你有更好的方法吗?
【问题讨论】:
-
您为什么要这样做?
Derived_A和Derived_B不应相互转换。 -
您不能将
Derived_B放入Derived_A的向量中。您应该将其设为Base的向量,然后它可以包含任何派生类。 -
@Barmar:不,
Base的向量只能容纳Base。也许您的意思是Base*的向量(或智能指针,如果您希望该向量管理对象生命周期)可以保存指向任何派生类的指针。
标签: c++ vector type-conversion