【发布时间】:2012-05-06 02:17:07
【问题描述】:
我想定义一个抽象基类,然后将一个该类型的数组(显然充满派生类的实例)作为函数参数传递,但编译器对我大喊大叫。有什么想法吗?
例如(“Testable”是抽象的,“Vecteur”是具体的):
void Testeur::commencerTest(Testable testables[], int nTestables, string titre) {
cout << "\n" << titre << "\n";
for (int i=0; i < nTestables; i++) {
testables[i].afficher();
}
}
// in main function:
Vecteur v1 = Vecteur(1,2,3);
Vecteur v2 = Vecteur(4,5,6);
Vecteur vecteurs[] = { v1, v2 };
int nVecteurs = 2;
this->commencerTest(vecteurs, nVecteurs, "Some text");
编译器在上述代码的第一行显示invalid abstract type ‘std::Testable’ for ‘testables’。
如何将抽象类型的数组作为函数参数传递?
【问题讨论】:
-
顺便说一句,错误消息暗示您在
std命名空间内定义了Testable,这是不允许的... -
你应该给我们Testable的定义
标签: c++ inheritance polymorphism abstract-class parameter-passing