我正在研究多项式的重载运算符。我正在使用>>运算符,但是在编译代码时出现错误。它告诉我没有匹配的运算符>>。我相信这与我在代码中使用的p1.degree有关,但我不确定。
我正在遵循我的书中有关运算符重载的示例。当我重载<<操作符p1.degree工作。现在我静止不动。
班级
class Polynomial
{
private:
int degree; // Degree of the poly nomial
int coef[9]; // Array of coefficients
public:
Polynomial(); // Cunstructor
void get_poly();
void display_poly();
void Add_2_Polynomials(Polynomial, Polynomial);
Polynomial operator + (const Polynomial &); // overloaded + operator
Polynomial operator - (const Polynomial &); // overloaded - operator
Polynomial operator * (const Polynomial &); // overloaded * operator
//friends
friend ostream &operator << (ostream &, const Polynomial &); // Overloaded << operator
friend istream &operator >> (istream &, const Polynomial &); // Overloaded >> operator
};
重载>>运算符
istream &operator >> (istream &strm, const Polynomial &p1)
{
cout << "Enter degree of polynomial: ";
strm >> p1.degree;
cout << "Enter the " << p1.degree+1 << "coeficients: ";
for (int i = p1.degree; i >=0; i--)
strm >> p1.coef[i];
}
我希望代码可以编译,以便可以使用>>获取我的多项式信息。
答案 0 :(得分:0)
使p1
为非常量,以便您可以修改以下值:
istream &operator >> (istream &strm, Polynomial &p1)
在声明中执行相同的操作:
friend istream &operator >> (istream &, Polynomial &);
在istream &operator >>
的末尾,返回对流的引用:
return strm;
附带说明(可能只是提供的示例),其中有未实现的功能。该代码不会与未实现的Polynomial()
构造函数链接,您可以删除该声明或将其更改为Polynomial(){}
。