标题:求教多重继承的二义性问题
只看楼主
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
结帖率:100%
已结贴  问题点数:10 回复次数:5 
求教多重继承的二义性问题
程序代码:
#include <iostream>
using namespace std;

class A
{
public:
    int a;
    void display( );
};

class B
{
public:
    int a;
    void display( );
};

class C :public A,public B
{
public:
    int b;
    void show( );
};

int main( )
{
    int m,n;
    C c1;
    c1.A::a = 3;
    c1.B::a = 8;
    c1.A::display( );
    c1.B::display( );
    return 0;
}
    上面的程序是谭浩强《C++程序设计》一书中的举例(P376页),按书中所说,这个程序应该可以运行,但实际上不能通过编译,问题就出在倒数的第三行(倒数第二行性质一样),我真不理解对象 c1 能访问基类数据,用同样的方法对象 c1 却不能访问基类的函数,虽然是同名函数,但是已经指明了所属的类呀。为什么?
搜索更多相关主题的帖子: 性问题 继承 
2010-08-11 11:47
promising
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:87
专家分:147
注 册:2009-8-31
得分:4 
原来的写错了~

[ 本帖最后由 promising 于 2010-8-11 13:09 编辑 ]

向前走着……
2010-08-11 13:08
promising
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:87
专家分:147
注 册:2009-8-31
得分:2 
回复 楼主 hmsabc
你的程序直接运行,编译不通过,但是把  函数体  加进去后就能运行了~

向前走着……
2010-08-11 13:15
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:2 
不是这么搞笑吧……

楼主你编译器报的错是什么?函数没定义嘛……
2010-08-11 16:52
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
得分:0 
回复 4楼 pangding
就是这么搞笑!是没有定义,见笑了。刚学嘛,稀里糊涂的,什么也不晓得,什么也不明白。但我相信在你们的鼓励之下,我很快就会搞清楚的。

[ 本帖最后由 hmsabc 于 2010-8-11 19:00 编辑 ]
2010-08-11 18:59
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:2 
呵呵,没事,刚学什么错误都有可能犯。我最近还犯过 if 里的 == 写成 = 呢,看了半天才看出来~

不过一般有語法错误的时候最简单,看看错误提示一般很快就排除了,所以有学会看编译器的提示。
语义错误比较麻烦,就是说語法是正确的,只是它干的不是你想让它干的,比如我刚说的那个例子。
2010-08-11 23:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315404-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.459820 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved