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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
>>提示没有与这些操作数匹配的运算符
#include //#include using std::istream; istream& func(istream& is) {  std::string buf;  while(is>>buf) std::cout>提示没有与这些操作数匹配的运算符  is.clear();  return is; } int main() {  istream& is=
ERROR:没有与这些操作数匹配的运算符,操作数类型为std::string
string str("hello world"); string *pstr=&str; cout //cout 需要  #include
没有与这些操作数匹配的运算符
没有与这些操作数匹配的运算符 #include //#include 缺少这句将会报错。 using namespace std; class Student { public: void get_value() { cout<<"please key num(001-999),name,sex(M/F):"; cin>>num>>name>>sex; } void disp
Error:有多个运算符"+="与这些操作数匹配
按照回答的方法的确可以解决问题,但VC提示的是有多个运算符能匹配,不是提示赋值错误,所以略有怀疑此说法。
多个运算符“=”与这些操作数不匹配
这是源代码if (m_list.GetItemCount() { AfxMessageBox(_T("列表中没有记录需要保存!")); return; } //打开另存为对话框 ,需要包含 #include CFileDialog dlg(FALSE, _T("xls"), _T("FileList"), OFN_HIDEREADONLY | OFN_OVERWRITEPRO
Error:没有这些操作数匹配的"<<"运算符,操作数类型为:std::ostream<<std::string
将string.h换成string
ifstream ostream istream ostream 不能声明
当学习C++ IO时,有iostream的同时,还有istream,ostrream,有ifstream的同时,还有ifstream,
C++学习——string和string.h
一直用c比较习惯,最近开始学C++,一开始就遇到了问题。如下的简单程序,string的使用。 #include #include using namespace std; int main() { string str; cin >> str; for (auto c : str) cout << c << endl; } VS提示错误如下: 错误 1 error C2
vs2012 二进制“==”: 没有找到接受“...”类型的左操作数的运算符(或没有可接受的转换)
二进制“==”: 没有找到接受“CSvrTableFrame”类型的左操作数的运算符(或没有可接受的转换) 把NULL==改为nullptr==
运算符||无法应用于bool和string类型的操作数
故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。听之语,慷慨愤然之气付之东,欣欣然若垂髫之貌——一言以蔽之:虽然我遇到了问题但是我很高兴;直接上图: 应该有人一看就知道哪里错了,但是有一句话加做:当局者迷;看到这个问题 (⊙﹏⊙)b WHAT? 通过上网查,看到了好多错误,顿时有一些释然,但是在众多网页中都一些文不对题