| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 614 人关注过本帖
标题:高手请看,好像比较的难以解决
只看楼主 加入收藏
shediao
Rank: 1
来 自:山东
等 级:新手上路
威 望:1
帖 子:52
专家分:0
注 册:2008-9-23
结帖率:100%
收藏
 问题点数:0 回复次数:5 
高手请看,好像比较的难以解决
// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream.h>

class A
{
public:
    //A(){ cout<<"调用无参数构造函数"<<endl;}
    A(int x=0):a(x){ cout<<"调用了A的含参数构造函数"<<endl;}
    void show(){ cout<<"调用A类中的show() a="<<a<<endl; }
private:
    int a;
};


class B:virtual public A
{
public:
    B(int x=0,int y=0):A(x),b(y){}
    void show(){
        cout<<"------------------------------------"<<endl;
        A::show();
        cout<<"调用B类中的show() b="<<b<<endl;
    }
private:
    int b;
};


class C:virtual public A
{
public:
    C(int x=0,int y=0):A(x),c(y){}
    void show(int a){cout<<"CCCC"<<endl;}
private:
    int c;
};


class D:public B,public C
{
public:
    D(int x=0,int y=0,int m=0,int n=0):B(x,y),C(x,m),A(x),d(n){}
    //void show(){}
private:
    int d;
};

int main(int argc, char* argv[])
{
    D d(1,2,3,4);
    d.show();
    return 0;
}

我这个程序是 B C 继承A  D继承B C A类中有个show()函数,B中对其重写 ,C中对其重载 怎么D中调用show()的时候会发生错误呢, c++编程怎么久了 这个问题 还没有解决,请高手帮忙 !! 谢谢大家
2008-11-13 09:05
pascale
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-9-9
收藏
得分:0 
console.cpp:48: 错误: 对成员‘show’的请求有歧义
console.cpp:30: 错误: candidates are: void C::show(int)
console.cpp:16: 错误:                 void B::show()
2008-11-13 09:41
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
收藏
得分:0 
程序代码:
int main(int argc, char* argv[])
{
    D d(1,2,3,4);
    d.B::show();          //d.show() => d.B::show()
    return 0;
}
2008-11-13 11:13
pascale
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-9-9
收藏
得分:0 
[bo][un]newyj[/un] 在 2008-11-13 11:13 的发言:[/bo]

int main(int argc, char* argv[])
{
    D d(1,2,3,4);
    d.B::show();          //d.show() => d.B::show()
    return 0;
}
 

如果是要调用C中的show函数该怎么写呢?
要传递的参数是A中的private..
2008-11-13 11:19
shediao
Rank: 1
来 自:山东
等 级:新手上路
威 望:1
帖 子:52
专家分:0
注 册:2008-9-23
收藏
得分:0 
回复 3# 的帖子
老兄我就是想问一下 为什么 在 d中调用 show()是会发生歧义呢?
2008-11-13 12:10
快速回复:高手请看,好像比较的难以解决
数据加载中...
 
   



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

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