我需要编写一个函数来重载==运算符来比较宽度,高度和颜色。我需要返回'Y',如果它相等,如果不是,则返回'N'。
这是我认为正确的代码,但一直给我错误:
错误C2679:二进制'<<' :找不到哪个运算符采用了'Rectangle'类型的右手操作数(或者没有可接受的转换)
我已经搜索了一个答案,并没有接近比较3个数据,因为大多数例子用于比较2个数据。
#include <iostream>
#include <string>
using namespace std;
class Rectangle
{
private:
float width;
float height;
char colour;
public:
Rectangle()
{
width=2;
height=1;
colour='Y';
}
~Rectangle(){}
float getWidth() { return width; }
float getHeight() { return height; }
char getColour() { return colour; }
Rectangle(float newWidth, float newHeight, char newColour)
{
width = newWidth;
height = newHeight;
colour = newColour;
}
char operator== (const Rectangle& p1){
if ((width==p1.width) && (height==p1.height) && (colour==p1.colour))
return 'Y';
else
return 'N';
}
};
int main(int argc, char* argv[])
{
Rectangle rectA;
Rectangle rectB(1,2,'R');
Rectangle rectC(3,4,'B');
cout << "width and height of rectangle A is := " << rectA.getWidth() << ", " << rectA.getHeight() << endl;
cout << "Are B and C equal? Ans: " << rectB==rectC << endl;
return 0;
}
答案 0 :(得分:8)
“&LT;&LT;”优先级高于“==”。将您的比较放在括号中:
cout << "Are B and C equal? Ans: " << (rectB == rectC) << endl;
答案 1 :(得分:3)
看起来你需要一些括号:
cout << "Are B and C equal? Ans: " << (rectB==rectC) << endl;
这是运营商优先问题;在<<
运行之前,rectB
已应用于==
。