我有一个抽象类在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