打印

C++中的ambiguous问题,高手请教

[复制链接]
1223|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghuyue|  楼主 | 2008-11-14 21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;};
};
  
变量m ,在B中自己内部用。在C中自己用。

如果在C中用m,会提示 ambiguous 错误。
不明白???
C中的m,就是从A中继承来的,
B中的m是私有的。

相关帖子

沙发
John_Lee| | 2008-11-15 02:16 | 只看该作者

最佳访问匹配先于可访问性检查

C++成员(数据或函数)访问规则:在检查一个成员的是否可访问(public, private等)之前,首先必须确定成员的最佳访问匹配。只有在确定了最佳匹配之后,才检查可访问性。

在你的程序中,两个 m 具有相同的匹配程度,所以就无法确定最佳匹配(这就已经是ambiguous了),因此永远也不会检查到 m 的可访问性。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

23

帖子

0

粉丝