Consider this code snippet:
#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;
}
There is a virtual function declared in Animal
class that needs to be redefined in Pig
class. However, Pig
derives from Mammal which has the definition of this function
I still get an error that the function has not been redefined in the derived class. Is there any way to make the definition in Mammal
sufficient?