【发布时间】:2012-06-11 16:18:42
【问题描述】:
在 C++ 中,我想要一个抽象类型 Query 的数组,它具有函数 calcScore()
这是一个纯虚函数。
我有两个非抽象类:ConQuery 和 DisQuery,它们实现了 calcScore 函数。
为了做到这一点,我这样定义了数组:
vector<Query*> m;
然后我像这样迭代并调用函数:
for (vector<Query*>::const_iterator it1 = index.begin() ;it1 != index.end() ; it1++)
{
cout << (*it1)->CalcScore() << endl;
}
调用 Query 的纯虚函数时出现错误。 如何通过多态类型调用 ConQuery 或 DisQuery 的函数? 谢谢。
【问题讨论】:
-
你如何初始化那个
vector? -
vector<Query*> m;然后是vector<Query>::const_iterator... 容器的真实类型是什么?无论如何,错误表明您正在从Query的构造函数/析构函数调用Query的虚函数...
标签: c++ polymorphism abstract-class pure-virtual