【问题标题】:Getting error while using operator overloading << in c++ using friend function使用友元函数在c ++中使用运算符重载<<时出错
【发布时间】:2015-02-23 17:01:15
【问题描述】:

我正在为多项式创建一个类。我在运算符重载中遇到错误。我是第一次使用它,所以错误可能很愚蠢 get_size() 正在返回数组的最大长度。 coefficient[] 是 coeff 的数组。 exponant[] 是指数 我已经使用参考声明了它们 int* coefficient; int* exponent;

多项式.h

 friend std::ostream& operator << (std::ostream&,Polynomial&);

多项式.cpp

//overloading << operator
std::ostream& operator << (std::ostream& out,Polynomial& obj)
{
for (int i=0 ; i < obj.get_size() ; i++)
 {
     if(obj.coefficient[i]!=0)
     {
         if (i== obj.get_size()-1)      //last term does not have '+'
             out << obj.coefficient[i] << "x^" << obj.exponent[i] <<endl;
         else 
             std::ostream& i = out << obj.coefficient[i] << "x^" <<  obj.exponent[i] << " + ";
     }
 }
 return out;
 }    

main.cpp

    cout << pol    // where pol is object 

提前致谢

【问题讨论】:

  • 由于你没有向我们展示整个代码,你得到了什么错误信息?
  • 你遇到什么样的错误?编译器错误?运行时错误?
  • 应该是std::ostream&amp; operator &lt;&lt; (std::ostream&amp; out, const Polynomial&amp; obj) BTW。
  • 我在 pol 后面加了分号;主要。
  • 嗯,正常的思维方式是问自己并检查为什么“get_size() 正在返回数组的最大长度”。是你做的吗?或者我误解了问题所在......顺便说一句,它甚至可以编译吗?这段代码似乎不止一个问题。

标签: c++ operator-overloading


【解决方案1】:

在不知道错误是什么的情况下,这绝对是不正确的:

std::ostream& i = out << obj.coefficient[i] << "x^" <<  obj.exponent[i] << " + ";

应该是:

out << obj.coefficient[i] << "x^" <<  obj.exponent[i] << " + ";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多