精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
服务方向
联系方式
锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究
最近培训学生学习操作符重载,遇到下面问题
错误 C2676 二进制“++”:“Rectangle”不定义该运算符或到预定义运算符可接收的类型的转换 ConsoleApplication1 E:\temp\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.cpp 58
main函数里代码是:
Rectangle rect(10,10);
rect++;
因为错误提示里不具体,开始也注意到了类型转换,所以查了些别的线索,没有解决,突然想到自己在演示++的重载,看重载的函数和使用的函数一致不一致,就检查了,发现是重载了左增,但main函数里用的是右增,所以出错:
在类里重载右增解决问题,代码如下:
Rectangle
Rectangle::operator++ (int)
{
Rectangle b(*this);
++(*this);
return b;
}
右增的标志是括号里的int。
这问题不看或后面的内容,或许还好解决有了或会想到类型转换容易导致误解。
另外如果不知道左右区分,看提示说有错,但是写代码的觉得自己也写了重载++,还有错,就可能生气郁闷,可能就解决不了问题。
初学者理论一定要全面,才容易解决问题。