C++多继承中的二义性 (二)

2014-11-24 12:12:47 · 作者: · 浏览: 1
{

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

{

}

这是错误的。

摘自 十分爱