Рассмотрим этот фрагмент кода:
#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, у которого есть определение этой функции
Я все еще получаю ошибку, что функция не была переопределена в производном классе. Есть ли способ сделать определение в Mammal
достаточным?