簡體   English   中英

我如何將多個類存儲在一個變量中,也許是一個列表? 或矢量? 多態性

[英]How would I store multiple classes within a variable, maybe a list? or 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:示例實現

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM