ambiguous 问题请教

yanghuyue 2008-11-14 08:42:34
class a
{
protected:
INT8U m;
void Inita(void) { m=0;};
};

class b:private a
{
void Initb(void) { m=0;};

};
class c : private a,private b
{

void Initc(void) { m=0;};
};

如果在class C中用m,会提示 ambiguous 错误。
不明白???
C中的m,就是从A中继承来的,
B中的m是私有的。
怎么会有二义性呢?
...全文
96 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hooked 2008-11-14
  • 打赏
  • 举报
回复
编译器要先找到成员变量,然后再对其访问权限进行判断,而在这里,当编译器去寻找m时,就发现了有一个二义性的错误。也就是说,在这里,编译器对二义性的检查高于了,或者说跨跃了访问控制权限。
toadzw 2008-11-14
  • 打赏
  • 举报
回复
B 中有了M,A中也有这就是多路径中的一种可以使用using来显示说明调用 ;

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧