正在其他基类中重新定义虚拟函数

问题描述 投票:0回答:2

考虑此代码段:

#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 使用命名空间std;哺乳动物类类操作; class Animal {public:virtual void doOp(Operation * op)= 0; };类...

c++ oop inheritance multiple-inheritance virtual-functions
2个回答
2
投票

但是,Pig源自具有此功能定义的哺乳动物


0
投票

Mammal在您的代码中不是从Animal派生的,因此它不能真正覆盖虚拟函数Animal::doOp()。您代码中成员函数Mammal::doOp()的定义仅定义了一个名为virtual的非doOp()函数。它不覆盖任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.