我有一个在父类(super class)InteractorStyle中定义的函数。然后,我还有另一个需要实现该功能(纯虚拟)的类PointSelector。然后,实例化PointSelector的子类PointSelector2D。编译器抱怨我无法实例化一个抽象类,因为未实现MyFunction()。为什么从InteractorStyle继承的函数不计为该实现?
#include <iostream>
// I can't change these:
class InteractorStyle
{
void MyFunction(){}
};
class PointSelector
{
virtual void MyFunction() = 0;
};
class PointSelector2D : public InteractorStyle, public PointSelector
{
};
int main()
{
PointSelector2D a;
return 0;
}
最佳答案
因为有了多重继承,您现在已经继承了两个不相关的函数,每个基类都继承了一个。它们恰好彼此具有相同的名称(实际上,它们并不相同;一个称为InteractorStyle::MyFunction
,另一个称为PointSelector::MyFunction
)。
但是一个不会覆盖另一个(至少不是在您希望的意义上)。
关于c++ - 继承的函数不算作实现吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7198238/