我无法与操作员>>匹配有什么原因吗?

Is there a reason why I am getting no match for operator>>?

本文关键字:gt 什么 操作员      更新时间:2023-10-16

我正在研究多项式的重载运算符。我正在使用>>运算符,但是当我编译代码时,我收到错误。它告诉我没有匹配的运算符>>。我相信这与我在代码中使用的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];
}

我希望代码能够编译,以便我可以使用>>获取多项式信息。

p1设为非常量,以便您可以修改以下内容中的值:

istream &operator >> (istream &strm, Polynomial &p1)

在声明中执行相同的操作:

friend istream &operator >> (istream &, Polynomial &);

istream &operator >> 的末尾,返回对流的引用:

return strm;

附带说明一下(可能只是提供的示例(,存在未实现的函数。代码不会与未实现的 Polynomial() 构造函数链接,您可以删除声明或将其更改为 Polynomial(){}