| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3993 人关注过本帖
标题:对重载函数的调用不明确
取消只看楼主 加入收藏
zqsf
Rank: 2
等 级:论坛游民
帖 子:26
专家分:90
注 册:2009-8-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
对重载函数的调用不明确
我定义了两个函数,这两个函数只是在返回值处不同,其他都一样,但是第二个有错误:
bignum bignum::operator +(int num)
{
    bignum temp(num);
    temp=add(*this,temp);
    //return add(*this,temp);
    return temp;
}

bignum bignum::operator +(double num)
{
    bignum temp(num);
    //temp=add(*this,temp);
    return add(*this,temp);
}
编译输出:
e:\临时程序\bignum\bignum\bignum.cpp(105) : error C2668: “bignum::bignum”: 对重载函数的调用不明确
1>        e:\临时程序\bignum\bignum\bignum.h(15): 可能是“bignum::bignum(double)”
1>        e:\临时程序\bignum\bignum\bignum.h(14): 或       “bignum::bignum(int)”
1>        试图匹配参数列表“(bignum)”时

add定义:bignum add(bignum &,bignum &)
{
    bignum temp;
         /*代码*/
         return temp;
}
构造函数:bignum();
    bignum(int);
    bignum(double);
    bignum(bignum &);


我定义的类确实有这两个重载的构造函数,但是网上有些说int型和double型不会构成二义性,即使不构成二义性,但是第二个函数中在返回时应该没有调用这两个重载的构造函数啊。我想问,int和double会不会构成二义性?在我的第二个函数中return时到底是哪里需要调用构造函数了?
搜索更多相关主题的帖子: 调用重载函数 
2009-08-12 12:45
zqsf
Rank: 2
等 级:论坛游民
帖 子:26
专家分:90
注 册:2009-8-7
收藏
得分:0 
我就是不知道它在哪个地方调用了构造函数啊!必要的代码我都已经附上了,其他的都是无关的代码,都是些理论计算代码了。
2009-08-13 07:49
zqsf
Rank: 2
等 级:论坛游民
帖 子:26
专家分:90
注 册:2009-8-7
收藏
得分:0 
回复 4楼 xufen340:
首先:你能解释一下为什么最好不要直接用this指针吗?
第二:在我的问题里的程序先temp=add(*this,temp);然后 return temp;则不会出现错误(其实这一句也有赋值赋不上的问题)而return add(*this,temp); 这一句为什么会出现调用重载构造函数的错误? 我不知道这一句怎么会调用构造函数,并没有让它重新生成新的对象啊?即使是它自己自动要求生成一个临时对象,也完全可以调用无参数的构造函数bignum()啊。
第三:重载int型和double型的构造函数应该不会构成二义性吧?
我没法把我的全部代码附上,因为我的代码很多,一个五个文件,很复杂。我想我附上的代码已经可以了,其他的都与问题没关系了,谢谢


2009-08-13 12:53
快速回复:对重载函数的调用不明确
数据加载中...
 
   



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

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