我写了一个C ++程序。
#include <iostream>
#include <string>
using namespace std;
class A
{
int a;
public:
void read()
{
cin>>a;
}
};
class B:public A
{
public:
B()
{ }
};
class C:public A
{
public:
C()
{}
};
class D:public B,public C
{
public:
void display()
{
cout<<a<<endl;
}
};
void main()
{
A a1;B b1;C c1;
D d1;
d1.display();
}
我收到一条消息说有歧义。 B继承A ..所以B类将从A类继承项'a'。此外,C类将继承A类中的项'a'。现在如果我试图继承D类中的B和C类,那么'a'我可以访问?来自B级或C级?有什么方法可以消除歧义。?
答案 0 :(得分:0)
您可以使用以下选项之一修复歧义问题:
明确基类
使用B
作为显式基类
void display()
{
cout<< B::a <<endl;
}
或使用C
作为显式基类。
void display()
{
cout<< C::a <<endl;
}
使用virtual
继承
更改B
和C
以使用virtual
继承。
class B: virtual public A
{
public:
B() {}
};
class C: virtual public A
{
public:
C() {}
};