【问题标题】:Input/Output Operators Overloading, must take exactly one argument error输入/输出运算符重载,必须只取一个参数错误
【发布时间】:2019-11-12 00:23:56
【问题描述】:

首先,我声明了类似于question 的重载函数,并且出现了与那里相同的错误。我按照答案的建议进行了更改,但仍然出现此错误:

[Error] 'std::ostream& Number::operator

代码:

    //numb.hpp   
    class Number {   
        public:
        .....    
        std::ostream &operator<<(std::ostream&, const Number&);  
    };  

    //numb.cpp  
    std::ostream& Number::operator<<(std::ostream &output, const Number &Num){
                output << "The integers this object stores are: " << Num.num << " and " << Num.num1;
                return output; 
             }

【问题讨论】:

  • 将运算符重载为成员函数或非成员函数有时意味着不同的东西。在您的情况下,您不应将其作为成员函数重载。请再次阅读您的书籍、教程或课堂笔记。或者get a couple of new good books

标签: c++ overloading


【解决方案1】:

你有两个不同的声明 - 第一个声明一个全局重载运算符,第二个声明(并定义)一个运算符,它是 Number 类的 成员(注意 @987654322 @?)。第一个是可以的(如果这是您的意图 - 将其定义为独立运营商),第二个显然不是。正如所解释的那样,您链接的答案和错误所说的那样 - 成员运算符需要采用 one 参数(除了隐式 this 参数)。

【讨论】:

  • 我已经编辑了这个问题,我忘了提到我的重载函数在数字类中,它不是全局重载运算符
  • 除非它不起作用。我假设你想要的是cout &lt;&lt; num;,其中num 是类型Number。您需要一个独立的运算符重载。
猜你喜欢
  • 2020-10-15
  • 2012-11-12
  • 2018-04-25
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多