我有一个在 C++ 中定义纯虚方法的抽象类:
class Base
{
Base();
~Base();
virtual bool Test() = 0;
};
我已经用许多其他类(它们提供了 Test() 的实现)对它进行了子类化,我将它们称为 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();
}
}
(请原谅我可能犯的任何错误,我正在即时写这个以提供一个简单的例子)。
问题是我无法实例化数组,因为它需要创建 Base 类的实例(它不能这样做,因为它是抽象的)。但是,如果不这样做,它就没有分配分配给数组索引所需的内存,因此在尝试访问该内存时会出现分段错误。我的印象是,将 new 和 delete 与 malloc 和 free 混合使用并不是一个好习惯。
可能是我混淆了应该使用它的方式,我应该尝试使用模板或其他一些机制来做到这一点,但希望我已经提供了足够的信息来说明我正在尝试做的事情。
那么最好的方法是什么,我将如何解决将内存分配给抽象类的问题?
谢谢,丹