错误总结:E0349没有与这些操作数匹配的运算符

错误总结:E0349没有与这些操作数匹配的"<<"运算符


在编程中遇到一个错误,总结一下。关于函数返回类对象的一个错误。
原来的代码:

#include<iostream>
using namespace std;

template<class T>
T max_value(T x, T y, T z){
	T temp;
	if(x>y) temp=x;
	else temp=y;
	if(z>temp) temp=z;
	return temp;
}

class Circle{
private:
	int x, y;
	double radius;
public:
	Circle(int a=0, int b=0, double c=0.0){
		x=a;
		y=b;
		radius=c;
	}
	friend ostream& operator<<(ostream& out, Circle& C){
		out<<"x="<<C.x<<" y="<<C.y<<" radius="<<C.radius;
		return out;
	}
	int operator>(Circle& C){
		if(radius>C.radius){
			return 1;
		}
		return 0;
	}
};

int main(){
	Circle c1(2,3,5),c2(3,5,8),c3(3,2,6);
	cout<<max_value(12,23,21)<<endl;
	cout<<max_value('a','b','9')<<endl;
	cout<<max_value(c1,c2,c3)<<endl;	//出现错误,在第一个<<运算符上,错误提示:没有与这些操作数匹配的"<<"运算符
	return 0;
}

网友给出了一个解释:
来源于百度知道
因此修改friend ostream& operator<<(ostream& out, Circle& C)函数:

friend ostream& operator<<(ostream& out, const Circle& C){
......
}

问题解决:
显示结果

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值