猿问

c++运算符+号重载

https://img2.mukewang.com/5b8f971b0001fdf305000744.jpg

/*

/*float Circle::operator + (Circle &circle2) const {
return(PI * circle2.radius *circle2.radius + PI * radius * radius);
}*/用这种方式float area;
//area = circle1 + circle2;可以返回float的area

而现在没被注释掉的部分用friend Circle operator+(const Circle& circle1,const Circle& circle2);编译出现错误,

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2440 “=”: 无法从“Circle”转换为“float” Project7 该如何更改


慕尼黑5688855
浏览 635回答 1
1回答

江户川乱折腾

很明显你这个友元函数的返回实际值类型和声明的返回值类型不搭配,而且无法完成隐式转换,所以才会报错。看你意图你想怎么用法:如果想得到数值类型,那么返回值类型改成float没毛病,就是楼上的解决办法;如果你想得到是Circle类,那么你要把返回语句修改一下,可以修改成如下
随时随地看视频慕课网APP
我要回答