class B : class A;
class C : class A;
class D : class B, class C;
此时,new D时候,就会构造出两个A,被称作二义性。
解决办法:
class B : virtual class A;
class C : virtual class A;
class D : class B, class C;
具体体现,程序编译过程中,报错:
error: request for member '*' is ambiguous
error: candidates are: void A::*()
error: void A::*()
意思是,请求成员不明确,有两个候选者。