gpt4 book ai didi

c++ - 获取错误 : no match for 'operator<<' (operand types are 'std::basic_ostream' and 'Complex' ) despite overloading the << operator

转载 作者:行者123 更新时间:2023-12-01 14:35:20 25 4
gpt4 key购买 nike

我是一名新手程序员,我正在编写一个将两个复数相加的简单程序。我重载了 <<通过以下方式:

ostream& operator << (ostream& output, Complex &complex_num){

output << complex_num.realPart << " + " << "(" << complex_num.imaginaryPart << ")i" <<endl;
return output;

}

我的加法函数如下:

Complex operator +(Complex &c2){
Complex temp;
temp.realPart=realPart+c2.realPart;
temp.imaginaryPart=imaginaryPart + c2.imaginaryPart;
return temp;
}

在我的主要功能中,当我尝试通过键入打印出结果时:

cout << "ADDITION OF THE TWO COMPLEX NUMBERS: "<<num1 + num2<< endl; 

我收到一条错误消息,指出运算符 << 不匹配.但是,当我分配另一个对象时 num3 = num1 + num2然后编写如下代码,程序运行正常。

cout << "ADDITION OF THE TWO COMPLEX NUMBERS: "<<num3<< endl; 

这里发生了什么?谁能帮帮我?

最佳答案

你的 operator+返回 Complex ,这是一个临时对象。与 operator<< 一起使用时不起作用,因为您试图将它绑定(bind)到非常量引用参数。

一个变量可以绑定(bind)到一个非常量引用,这样就可以了。

修复方法是将参数设为 operator<<通过常量引用:

ostream& operator << (ostream& output, Complex const &complex_num);

所以它现在也适用于临时工。更好的是,它也适用于 const 参数。

关于c++ - 获取错误 : no match for 'operator<<' (operand types are 'std::basic_ostream<char>' and 'Complex' ) despite overloading the << operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62078649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com