0

我正在尝试编写一个程序,该程序最终将能够使用 +,-,*,/,solve,(etc) 多项式。我从一个尝试添加两个单项式的简单案例开始,并将在此基础上慢慢建立。我正在尝试重载 + 运算符,但我不断收到错误消息:

错误与“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.

在我的多项式类标题中,我将其定义为:

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;
}

* 请注意,在我深入研究不同指数等的实际情况之前,我只是想让 operator+ 先工作。这只是一个简单案例的准系统。我传入 m1(2,3) 是 2x^3,m2(3,3) 是 3x^3 应该清楚地等于 5x^3,但我得到一个错误。不要担心打印我已经弄清楚的结果部分。

4

2 回答 2

0

首先,可能是您operator+应该返回一个Monomial.

但是您的问题与 C++ 范围有关。朋友原型声明的作用域是Monomial类,并且在你以后编写时不能被编译器使用:

result = m1 + m2;

在声明之前,您需要一个 operator+() 的原型在该范围内可见。因此,您必须复制该原型并在之前声明它(或让实现出现在之前)。

于 2013-11-08T13:28:14.370 回答
0

假设PolynormialMonomial没有真正的关系,试试这个:

Monomial m1(2,3);
Monomial m2(3,3);
Polynomial result;
result = m1 + m2;
于 2013-11-08T06:07:13.360 回答