我正在尝试编写一个程序,最终能够实现+, - ,*,/,求解,(等)多项式。我从一个简单的例子开始尝试添加两个单项式,并将慢慢建立它。我正在尝试重载+运算符,但我一直收到错误:
错误与'm1 + m2'中的'operator +'不匹配
主要是我这样称呼:
Monomial m1(2,3);
Monomial m2(3,3);
Monomial result;
result = m1 + m2; // I get an error when trying to do this.
在我的Polynomial类标题中,我把它定义为:
friend Polynomial operator+ (const Monomial&, const Monomial&);
我实施的方式是:
Polynomial operator+(const Monomial& mono1, const Monomial& mono2){
Polynomial poly;
poly.coef = mono1.coef + mono2.coef; // coef stands for coefficient
poly.exp = mono1.exp; // exp stands for exponent
return poly;
}
*注意我只是在我深入研究不同指数等的实际情况之前,首先尝试运算符+工作。这只是一个简单案例的准分子。 我传入的是m1(2,3),即2x ^ 3,m2(3,3)是3x ^ 3,它应该清楚地等于5x ^ 3,但是我得到一个错误。不要担心打印出来的结果部分。
答案 0 :(得分:0)
假设Polynormial
和Monomial
没有真正的关系,请尝试以下方法:
Monomial m1(2,3);
Monomial m2(3,3);
Polynomial result;
result = m1 + m2;
答案 1 :(得分:0)
首先,您的operator+
可能会返回Monomial
。
但是你的问题与C ++范围有关。
朋友原型声明的范围是Monomial
类,
当你后者写的时候编译器不能使用它:
result = m1 + m2;
在语句之前,您需要在该范围内显示operator +()的原型。 因此,您必须复制该原型并在之前声明它(或之前出现实现)。