VPavliashvili
VPavliashvili

Reputation: 655

inheritance and derived classes

The compiler says that function dummy() on line 22 (in classs doumbClass) is ambiguous. How can I fix that?

#include<iostream>
#include<iomanip>
using namespace std;

class BusinessClass {
    public :
        virtual void dummy(){
            cout<<"businessClass"<<endl;
        }
};

class EconomyClass {
    public:
        void dummy() {
            cout<<"economyClass"<<endl;
        }
};

class DoumbClass : public BusinessClass, public EconomyClass{
    public:
        void moreDumb(){
            dummy();
        }
};

int main(int argc, char **argv)
{
    DoumbClass xclass;
    xclass.moreDumb();
    return 0;   
}

Upvotes: 0

Views: 64

Answers (2)

HMD
HMD

Reputation: 2226

As you can use Arkady Godlin method, You also can specify which dummy function you want to use in class declaration, if you know in advance. Like this :

class DoumbClass :public BusinessClass,public EconomyClass
{
public:
    using BusinessClass::dummy;
//or using EconomyClass::dummy;
};

Upvotes: 1

Arkady Godlin
Arkady Godlin

Reputation: 588

you need to specify which base function you want to call you can do this.

void moreDumb() {
    EconomyClass::dummy();
}

or

void moreDumb() {
    BusinessClass::dummy();
}

Upvotes: 1

Related Questions