我对c ++还有些新意,我不确定在列表中创建不同的实例。在我的程序中,我有多个继承自基类的类:
class Foo{
}
class Bar : public Foo {
}
class Fin : public Foo {
}
我面临的问题是,如果一个人被摧毁,我需要更换另一个。例如:
for (int i = 0; i < list/vector/? ; i++){
if (bar_i[i].destroyed()){
Fin fin_i = new Fin(); // in place of Bar
}
}
然后将获得Bar(s)点。我可以用什么来创建列表,向量或其他什么来创建多个类的实例?
答案 0 :(得分:1)
您无法在标准容器中存储不同类型(标准容器要求所有元素属于同一类型)。
但是,您可以使用多态并将指针存储到父(常用)类型。
您可能需要重新考虑您的设计并将常用方法和成员移动到父类型。
编辑1:实施示例
std::vector<Foo *> container;
for (unsigned int i = 0; i < 6; ++i)
{
if (i & 1)
{
container.push_back(new Bar);
}
else
{
container.push_back(new Fin);
}
}
for (unsigned int i = 0; i < 6; ++i)
{
container[i]->Common_Operation();
}