我有以下兩個類,一個從另一C++繼承,基函數重寫時
Class A{
void print(){cout << "A" << endl;}
}
Class B : A{
void print(){cout << "B" << endl;}
}
Class C : A{
void print(){cout << "C" << endl;}
}
繼承然後在另一個I類有以下仍被稱爲:
vector<A> things;
if (..)
things.push_back(C());
else if (..)
things.push_back(B());
things[0].print();
這總是打印A
我想打印B或C,具體取決於我向矢量添加了哪些東西
我該如何做到這一點?
我已經試過抽象,但我不完全知道如何在C++中使用它,它一直沒有工作對我來說
請記住,如果在使用向量過程中發生任何異常,您將發生泄漏。一個解決方案當然是使用Boost的指針庫。但是,如果這是不可能的,一個非常簡單的解決方案可能是創建一個'pointer_vector'類,該類有一個可以使用'get'函數訪問的私有'vector '。這個包裝器的析構函數執行刪除操作。現在這些對象被保證被刪除。 –
GManNickG
2010-03-06 01:25:11