我无法与操作员>>匹配有什么原因吗?
Is there a reason why I am getting no match for operator>>?
我正在研究多项式的重载运算符。我正在使用>>运算符,但是当我编译代码时,我收到错误。它告诉我没有匹配的运算符>>。我相信这与我在代码中使用的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(){}
。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- ifstream什么都没读
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 什么是模板&lt;&gt;inline bla bla
- 使用 std::vector<boost::shared_ptr<Base_Class>> 或 boost::p tr_vector 的性能注意事项是什么<Base>