我正在尝试在程序中重载+ =运算符。它由一个多项式类组成,该类包括一个int度(多项式的最高次数)和一个Node * Poly(一个指向节点的指针)
struct Node{ int coefficient;
Node* next; };
这是我的Node结构,但我在Polynomial类中重载了。
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度。
答案 0 :(得分:0)
试试这个:
struct polynomial {
std::vector< int > coeffs;
std::size_t degree() const { return coeffs.size(); }
};
polynomial &polynomial::operator+= ( polynomial &lhs, polynomial const &rhs ) {
if ( lhs.degree() < rhs.degree() ) lhs.coeffs.resize( rhs.degree() );
for ( std::size_t k = 0; k != rhs.degree(); ++ k ) {
lhs.coeffs[ k ] += rhs.coeffs[ k ];
}
return lhs;
}
没有链接列表,没有手动内存管理,您可以轻松地将其更改为其他数字类型。