error c2678解决方法
使用UE4时发生
error C2678: binary ‘==’ : no operator found which takes a left-hand operand of type ‘const HUDMessage’ (or there is no acceptable conversion)
最后可以定位到这里
int32 Find(const ElementType& Item) const{const ElementType* RESTRICT Start = GetData();for (const ElementType* RESTRICT Data = Start, *RESTRICT DataEnd = Data + ArrayNum; Data != DataEnd; ++Data){if (*Data == Item)//这里{return static_cast<int32>(Data - Start);}}return INDEX_NONE;}
可以看到,是因为使用了TArray的Find方法,但是TArray储存的自定类型HUDMessage没有重载==运算符,所以*Data == Item找不到指定运算符重载。于是添加:
bool HUDMessage::operator ==(const HUDMessage& a){return this->text.ToString() == a.text.ToString();}
结果还是报错。。。
最后再次仔细阅读错误信息,发现
left-hand operand of type ‘const HUDMessage’
这一句提到接受的操作数是const HUDMessage,于是就明白了,Data在上下文中可以看到,是一个const类型,这时候编译器找的是左右操作数都为const的operator ==,而不是我们重载的左操作数为正常变量,右操作数为const的operator ==。所以解决方法有二:
1.重载函数加const修饰符,本质是使编译时加入的this指针变为const,即左操作数变为const
bool HUDMessage::operator ==(const HUDMessage& a)const{return this->text.ToString() == a.text.ToString();}
2.直接全局重载相应运算符
bool operator ==(const HUDMessage& a,const HUDMessage& b)
{return a.text.ToString() == b.text.ToString();
}
但是因为头文件的include顺序问题方法二总是重定义,于是选择方法一,编译通过。
这个问题告诉我们,还是应该仔细看error。。。
error c2678解决方法相关推荐
- Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法
Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法 参考文章: (1)Win10 Microsoft Store 微软商店 Error 0x0000019 ...
- mono-3.4.0 源码安装时出现的问题 [do-install] Error 2 [install-pcl-targets] Error 1 解决方法
mono-3.4.0 源码安装时出现的问题 [do-install] Error 2 [install-pcl-targets] Error 1 解决方法 参考文章: (1)mono-3.4.0 源码 ...
- Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法
Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法 参考文章: (1)Win2008上.NET4.0部署出错HTTP 错误 5 ...
- HTTP 错误 500.19- Internal Server Error 错误解决方法
HTTP 错误 500.19- Internal Server Error 错误解决方法 参考文章: (1)HTTP 错误 500.19- Internal Server Error 错误解决方法 ( ...
- Conversion to Dalvik format failed with error 1解决方法:
Conversion to Dalvik format failed with error 1解决方法: 第一种情况包导入错误.点击工程-->build path-->libraries- ...
- linux网卡有很多error,教你设置win7系统虚拟机安装linux提示network error的解决方法...
很多朋友在使用电脑的过程中,会发现win7系统虚拟机安装linux提示network error的现象,当遇到win7系统虚拟机安装linux提示network error的问题,我们要怎么解决呢?如 ...
- mac显示无法连接adobe服务器,Mac安装Adobe软件,如遇Error提示解决方法
Mac10.15.3 安装Adobe Photoshop 2020的时候一直提示Error错误 The installation cannot continue as the installer fi ...
- 【Ansible】Ansible控制windows插件安装及运行error与解决方法
一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: ![1_2] 二.问:安装kerberos报错 答:需要先安装libkrb5开发包 ...
- 安装DotNetCore.1.0.0-VS2015Tools.Preview2.exe 错误Error 0x81f40001 解决方法
安装DotNetCore.1.0.0-VS2015Tools.Preview2.exe 错误Error 0x81f40001 解决方法 参考文章: (1)安装DotNetCore.1.0.0-VS20 ...
最新文章
- 【Oracle Database】数据库用户管理
- 【题解】P1029 最大公约数和最小公倍数问题
- 1.python的安装
- VS2005工程由Pocket PC 2003 SDK转为WINCE6.0 SDK的问题
- Android 中基本图像绘制
- 8 线程安全且高效的单例模式
- 漫画:什么是 “元宇宙” ?
- python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)
- html在线测试 css,HTML+CSS测试
- Windows7 x64在Wampserver上安装memcache
- SAStruts アクションにJSONを返すメソッドを作成してみる
- 【SQL】实验三 视图管理和使用
- git fatal: destination path ‘**‘ already exists and is not an empty directory.解决
- 恒凯USB数据采集卡在国产麒麟操作系统下的应用(四)QT环境设置及数据采集实验
- mysql jena rdf_Jena 操作 RDF 文件
- (兼职月赚两万?)程序员如何接私活? 如何让自己的知识变现?
- SublimeText 3汉化版安装教程和创建第一个HTML网页
- Appium 按压元素进行滑动
- 表格固定表头,tbody加滚动条
- [教程资源] HTC Vive UI Guideline