我一直在写一个多项式类,我正在为它重载运算符。我设法(我认为)成功地重载了+ =运算符,现在我创建了一个外部函数,使用+ =进行加法,就像许多来源中的建议一样。它有效但我不能出于某种原因将它们链起来 当我尝试添加像这样的多项式时
poly a, b, c, d;
a=b+c+d;
我收到错误:没有匹配函数来调用&poly; poly :: poly(const poly)'
我的+ =功能的主体并不是那么重要,但它是什么样的:
poly& operator+= (const poly& a){
//implemented +=
return *this;
}
我的添加功能(课外)看起来像这样:
const poly operator+ (poly a, const poly & b){
a+= b;
return a;
}
我在这里做错了什么?
答案 0 :(得分:1)
您的poly
类缺少poly(const poly&)
形式的副本构造函数。请注意,如果您的poly(poly&)
已经不够用了。您需要一个以const poly&
作为参数的复制构造函数。