锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源社区 / C2676 二进制++不定义该运算符或到预定义运算符可接收的类型的转换

服务方向

人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发

联系方式

固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究


C2676 二进制++不定义该运算符或到预定义运算符可接收的类型的转换

背景

最近培训学生学习操作符重载,遇到下面问题

错误	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。

这问题不看或后面的内容,或许还好解决有了或会想到类型转换容易导致误解。

另外如果不知道左右区分,看提示说有错,但是写代码的觉得自己也写了重载++,还有错,就可能生气郁闷,可能就解决不了问题。

初学者理论一定要全面,才容易解决问题。

友情链接
版权所有 Copyright(c)2004-2015 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:A、郑州市芯互联大厦北楼1803A(文化路优胜北路西北角),B、郑州大学北校区院内