我有一個抽象類在C++定義的純虛方法:如何使用抽象類將內存分配給實例數組?
class Base
{
Base();
~Base();
virtual bool Test() = 0;
};
我已經與一些其它類的,我將稱之爲(其爲試驗()提供一個實現)的子類此A,B,C,等等。我現在想用這個基類來創建這些類型的數組:
int main(int argc, char* argv[])
{
int size = 0;
Base* bases = new Base[10];
bases[size++] = new A();
bases[size++] = new B();
for (int i = 0; i < size; i++)
{
Base* base = bases[i];
base->Test();
}
}
(對不起,我可能會做任何錯誤,我在飛行寫這封信,提供一個簡單的例子)。
問題是我不能實例化數組,因爲它需要創建一個基類的實例(它不能這樣做,因爲它是抽象的)。但是,如果不這樣做,它沒有分配需要分配給數組索引的內存,因此在嘗試訪問該內存時提供了分段錯誤。我覺得將new和delete與malloc和free混合並不是好習慣。
這可能是我混淆了這個應該使用的方式,我應該嘗試使用模板或其他機制來做到這一點,但希望我已經提供了足夠的信息來說明我正在嘗試做什麼。
那麼做這件事的最好方法是什麼?以及如何解決將內存分配給抽象類的問題?
感謝, 丹
破壞者也應該是虛擬的 – 2008-12-15 18:33:17
+1不要害怕問 – paxos1977 2008-12-16 01:22:56