private:
int b2;
};
class C : public B1, public B2
{
public:
int f();
private:
int c;
};
已知:C c1;
下面的两个访问都有二义性:
c1.a;
c1.A::a;
而下面的两个访问是正确的:
c1.B1::a;
c1.B2::a;
类C的成员函数f()用如下定义可以消除二义性:
int C::f()
{
retrun B1::a + B2::a;
}
由于二义性的原因,一个类不可以从同一个类中直接继承一次以上,例如:
class A : public B, public B
{
…
}
这是错误的。