[C++ rudiment]多重继承中二义性错误的解决:虚基类
C++中允许多重继承,看以下例子:































编译后会出现以下编译错误:
error C2385: ambiguous access of 'a'。
究其原因,因为A是D的间接基类,通过D访问A的数据成员有两条路可走,一是D->B->A,另外一条是:D->C->A.所以导致了二义性。
解决:
这可以通过虚基类来解决二义性问题,如果采用虚基类方式来定义派生类,则在创建派生类对象时,类层次结构中某个虚基类的成员只出现一次。即基类的一个副本被所有的派生类对象所共享。修改代码如下后即可解决:































我没有什么雄心壮志,我只想给自己和关心自己的家人和朋友一个交代,仅此而已。