2 olivertai olivertai 于 2016.02.10 06:43 提问

另一个c++问题(没有与这些操作数匹配的运算符)

代码如下,在类外定义了两个函数,写第二个函数的时候给somme赋值时提示没有与这些操作数匹配的运算符,请问各位大神是怎么回事儿?
BigInt BigInt::puissanceBigInt(int n)
{
long long int puis = 1;
for(int i=0;i<n;i++)
{
puis *= n;
}
return puis;
}
BigInt BigInt::serieBigInt(int n)
{
long long int somme = 0;
for(int i=0;i<n;i++)
{
somme += puissanceBigInt(i+1);
}
return somme;
}

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.10 07:30

somme += puissanceBigInt(i+1);
你没有运算符重载,怎么能让long long int和BigInt相加呢。

BigInt BigInt::puissanceBigInt(int n)
->
long long int BigInt::puissanceBigInt(int n)
看看

你用的什么编译器。不是所有编译器都支持long long int

qq_27183003
qq_27183003 赞同,应该重载+=运算符。 BigInt BigInt::operator+=(BigInt)
接近 2 年之前 回复
caozhy
caozhy 回复olivertai: 取决于BigInt怎么定义的
接近 2 年之前 回复
olivertai
olivertai 回复caozhy: 多谢~我用的vs2010 应该可以的
接近 2 年之前 回复
wangzhiyu1980
wangzhiyu1980   2016.02.10 13:25

可以试试定义一个 long long int operator+=(long long int, BigInt)

olivertai
olivertai 回复zy__: 多谢~
接近 2 年之前 回复
91program
91program   Ds   Rxr 2016.02.10 14:15

你也可以试试将函数的返回值类型修改一下,如:

 BigInt BigInt::serieBigInt(int n)

修改为:

 long long int BigInt::serieBigInt(int n)
91program
91program 回复caozhy: 孙子,你又来找骂!爷爷说过你跟我的回复一下、爷爷就骂一次。这是我对你的“承诺”!无论我的回答正确与否,也无论你的跟的正确与否。骂人,以后升级了:我会骂一片,包括你的家人。Are you ready!天作孽犹可活,自作孽不可活!
接近 2 年之前 回复
91program
91program 回复caozhy: 孙子,你爷爷是否是抄袭,也不是你一个晚辈能判断的。
接近 2 年之前 回复
caozhy
caozhy 又在抄袭答案。请管理员删除重复无效的答案。
接近 2 年之前 回复
olivertai
olivertai 回复91program: 多谢!
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!