如何在变量中存储多个类,可能是一个列表?还是矢量?多态性

时间:2016-03-28 22:58:19

标签: c++ list class vector polymorphism

我对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)点。我可以用什么来创建列表,向量或其他什么来创建多个类的实例?

1 个答案:

答案 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();
  }