考虑以下代码片段:
#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
中的定义充分? 最佳答案
但是,Pig来自哺乳动物,它具有此功能的定义
不,不是。 Mammal
不会覆盖功能Animal::doOp
,因为Mammal
不继承Animal
。
一个简单的解决方案是从Mammal
派生Animal
,并从Animal
删除Pig
基数:
class Mammal : public Animal {
class Pig : public Mammal {
关于c++ - 在其他基类中重新定义了虚函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58755079/