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

[复制链接]
 楼主| yanghuyue 发表于 2008-11-14 21:21 | 显示全部楼层 |阅读模式
class&nbsp;a<br />{<br />&nbsp;protected:<br />&nbsp;&nbsp;&nbsp;INT8U&nbsp;m;<br />&nbsp;&nbsp;&nbsp;void&nbsp;Inita(void)&nbsp;{&nbsp;m=0;};<br />};<br /><br />class&nbsp;b:private&nbsp;a<br />{<br />&nbsp;void&nbsp;Initb(void)&nbsp;{&nbsp;m=0;};<br /><br />};<br />class&nbsp;c&nbsp;:&nbsp;private&nbsp;a,private&nbsp;b<br />{<br /><br />&nbsp;void&nbsp;Initc(void)&nbsp;{&nbsp;m=0;};<br />};<br />&nbsp;&nbsp;<br />变量m&nbsp;,在B中自己内部用。在C中自己用。<br /><br />如果在C中用m,会提示&nbsp;ambiguous&nbsp;错误。<br />不明白???<br />C中的m,就是从A中继承来的,<br />B中的m是私有的。<br />
John_Lee 发表于 2008-11-15 02:16 | 显示全部楼层

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

C++成员(数据或函数)访问规则:在检查一个成员的是否可访问(public,&nbsp;private等)之前,首先必须确定成员的最佳访问匹配。只有在确定了最佳匹配之后,才检查可访问性。<br /><br />在你的程序中,两个&nbsp;m&nbsp;具有相同的匹配程度,所以就无法确定最佳匹配(这就已经是ambiguous了),因此永远也不会检查到&nbsp;m&nbsp;的可访问性。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

23

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部