【发布时间】:2017-11-03 21:47:06
【问题描述】:
我一直在编写一个多项式类,并且正在为它重载运算符。我设法(我认为)成功地重载了 += 运算符,现在我创建了一个使用 += 进行加法的外部函数,就像许多来源中建议的那样。它有效,但由于某种原因我无法链接它们 当我尝试添加这样的多项式时
poly a, b, c, d;
a=b+c+d;
我得到一个错误:没有匹配函数调用'poly::poly(const poly)'
我的 += 函数的主体并不那么重要,但就是这样:
poly& operator+= (const poly& a){
//implemented +=
return *this;
}
我的加法函数(类外)如下所示:
const poly operator+ (poly a, const poly & b){
a+= b;
return a;
}
我在这里做错了什么?
【问题讨论】:
-
为什么
operator+会返回const? -
a和b都应该是const &。 -
您缺少copy constructor。
-
看起来您没有
poly的复制构造函数。b + c产生const poly并且您的operator +将poly作为第一个参数,因此它必须将const poly复制到poly a但它不能,因为没有复制构造函数poly::poly(const poly &).
标签: c++ class object math overloading