XiaoHui.net 笑汇程序员论坛首页
工作并快乐着,职业并休闲着
寻梦的岁月从不言辛苦几许,
不问收获几多……
» 游客:  申请新用户 | 登录 | 会员 | 统计 | 帮助 » XiaoHui.Net 笑汇程序员论坛 | 纯文字版 | 全站索引 | XiaoHui.com


[算法讨论] 各位高手请进

RSS 订阅当前论坛  

上一主题 下一主题
     

标题: [算法讨论] 各位高手请进  
 
200600404060
小水手
Rank: 1


UID 30584
精华 0
积分 1
帖子 1
阅读权限 10
注册 2007-9-6
来自 广西柳州
状态 离线
各位高手请进

我写出下面的算法:

#include <iostream>
using namespace std;
int max (int a,int b,int c,int d=0)
{
        if(b>a&&a>d) a=b;
    if(c>a&&a>d) a=c;
        if(a<d||b<d||c<d) cout<<"ERROR"<<endl;
        return a;
}
int max(int a,int b,int d=0)
{
        if(a>b&&b>d) return a;
        else if (b>a&&a>b) return b;
        if(a<d||b<d) cout<<"ERROR"<<endl;  
}
int main()
{   
        int a=1,b=2,c=-1;
        cout<<max (a,b,c)<<endl;
        cout<<max (a,b)<<endl;
        return 0;
}
得到的错误是:ambiguous call to overloaded function
怎么解决呢????
2007-9-8 22:45#1
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
luluwenwen
传说中的水手
Rank: 5Rank: 5



UID 176
精华 0
积分 683
帖子 683
阅读权限 1
注册 2003-6-24
来自 哈尔滨
状态 离线
重定义函数了!

www.lovevc.cn
2007-9-10 10:42#2
查看资料  访问主页  Blog  发短消息  顶部
 
冰雪新空
传说中的水手
Rank: 5Rank: 5



UID 29989
精华 0
积分 10
帖子 10
阅读权限 1
注册 2007-4-22
来自 孝感
状态 离线
你重载了max函数,并且两个的最后都有默认的参数,使得你在执行这条“cout<<max (a,b,c)<<endl;“语句的时候回产生歧义,编译器不知道你要调用的是哪个函数,第一个函数显然可以调用,但第二个函数也可以将c看作是在为第三个参数赋值,所以也可以调用。这样就会出现错误。
2007-9-10 21:43#3
查看资料  Blog  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题  


 


所有时间为 GMT+8, 现在时间是 2008-12-2 13:41 Powered by Discuz! 4.1.0 清除 Cookies - XiaoHui.Net 笑汇程序员论坛 - Archiver