考虑此代码段:
#include <bits/stdc++.h>
using namespace std;
class Mammal;
class Operation;
class Animal{
public:
virtual void doOp(Operation* op) = 0;
};
class Mammal{
public:
void doOp(Operation* op){
op->thisIsMammal(this);
}
};
class Pig: public Mammal, public Animal{
};
class Operation{
public:
void thisIsMammal(Mammal* mammal){
cout << "This is a mammal!" << endl;
}
};
int main(){
Pig pig;
Operation op;
pig.doOp(&op);
return 0;
}
Animal
类中声明了一个虚函数,需要在Pig
类中重新定义。但是,Pig
源自具有此功能定义的哺乳动物[]
我仍然收到错误消息,指出该函数尚未在派生类中重新定义。有什么方法可以使Mammal
中的定义足够?
请考虑以下代码段:#include
但是,Pig源自具有此功能定义的哺乳动物
Mammal
在您的代码中不是从Animal
派生的,因此它不能真正覆盖虚拟函数Animal::doOp()
。您代码中成员函数Mammal::doOp()
的定义仅定义了一个名为virtual
的非doOp()
函数。它不覆盖任何内容。