C++中允许多重继承,看以下例子:

[C++ rudiment]多重继承中二义性错误的解决:虚基类#include <iostream>
[C++ rudiment]多重继承中二义性错误的解决:虚基类
using namespace std;
}

编译后会出现以下编译错误:
error C2385: ambiguous access of 'a'。
究其原因,因为A是D的间接基类,通过D访问A的数据成员有两条路可走,一是D->B->A,另外一条是:D->C->A.所以导致了二义性。

解决:

这可以通过虚基类来解决二义性问题,如果采用虚基类方式来定义派生类,则在创建派生类对象时,类层次结构中某个虚基类的成员只出现一次。即基类的一个副本被所有的派生类对象所共享。修改代码如下后即可解决:

[C++ rudiment]多重继承中二义性错误的解决:虚基类#include <iostream>
[C++ rudiment]多重继承中二义性错误的解决:虚基类
using namespace std;
}

 

相关文章:

  • 2021-06-13
  • 2021-05-23
  • 2021-09-02
  • 2021-11-22
  • 2022-01-06
  • 2022-12-23
  • 2021-12-10
  • 2021-10-27
猜你喜欢
  • 2021-09-27
  • 2022-03-08
  • 2022-12-23
  • 2022-12-23
  • 2022-01-20
  • 2021-08-02
  • 2022-12-23
相关资源
相似解决方案