【发布时间】:2012-12-01 07:35:40
【问题描述】:
我正在尝试在我的程序中重载 += 运算符。它由一个多项式类组成,该类包括一个 int 次数(多项式的最高次数)和一个 Node* Poly(指向节点的指针)
struct Node{ int coefficient;
Node* next; };
那是我的节点结构,不过我在多项式类中重载。
Polynomial& Polynomial::operator +=(const Polynomial& rP){
Polynomial copyRP(rP);
poly->coefficient = poly->coefficient + copyRP.poly->coefficient;
poly = poly->next; //if I take this and
copyRP.poly = copyRP.poly->next; //this away, it runs fine
//with it however the program compiles but doesnt work
return *this;
}
节点包含向后的系数列表,如果这很重要的话。例如 3x^2+2x+5 在节点中存储为 5->2->3 并且度数为 2。
【问题讨论】:
-
那么多项式类的定义是什么?它是如何“不工作”的?为什么你需要那些你说它可以正常工作的线条?为什么
operator+=会复制任何东西? -
我做了一个副本,因为
rP.poly = rP.poly->next会说不能修改左值,如果我保留poly = poly->next和copyRP.poly = copyRP.poly->next,它就不起作用,我忘了把while(poly != NULL)放到通过整个节点添加,但我在我的程序中有它 -
差不多,如果我有两个多项式,一个是3x^2+2x+2和2x^2+3x+4,我想返回5x^2+5x+6,加上这两个多项式,但每当我尝试
return *this时,它不会让我,但是如果我复制this,它会让我返回副本,我不明白! -
oo 和
class Polynomial{private: int degree; Node* poly};
标签: c++ operators overloading nodes