对重载函数的调用不明确
我定义了两个函数,这两个函数只是在返回值处不同,其他都一样,但是第二个有错误: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时到底是哪里需要调用构造函数了?