2016-03-28 53 views
-2

我對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 
    } 
} 

然後,它將採取酒吧點。我可以用什麼來創建一個列表,向量或其他來創建多個類的實例?

+1

「存放類」 是沒有意義的。你想將*不同類的*實例存儲在列表中? – immibis

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

好吧我喜歡你說的話。但是,我將如何實現呢?我將如何使用指針訪問子類? –

+1

@DylanLittle:查看我的編輯1.同時在互聯網上搜索「C++多態指針」或「C++調度示例」。 –

相關問題