使用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解决方法相关推荐

  1. Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法

    Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法 参考文章: (1)Win10 Microsoft Store 微软商店 Error 0x0000019 ...

  2. 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 源码 ...

  3. Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法

    Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法 参考文章: (1)Win2008上.NET4.0部署出错HTTP 错误 5 ...

  4. HTTP 错误 500.19- Internal Server Error 错误解决方法

    HTTP 错误 500.19- Internal Server Error 错误解决方法 参考文章: (1)HTTP 错误 500.19- Internal Server Error 错误解决方法 ( ...

  5. Conversion to Dalvik format failed with error 1解决方法:

    Conversion to Dalvik format failed with error 1解决方法: 第一种情况包导入错误.点击工程-->build path-->libraries- ...

  6. linux网卡有很多error,教你设置win7系统虚拟机安装linux提示network error的解决方法...

    很多朋友在使用电脑的过程中,会发现win7系统虚拟机安装linux提示network error的现象,当遇到win7系统虚拟机安装linux提示network error的问题,我们要怎么解决呢?如 ...

  7. mac显示无法连接adobe服务器,Mac安装Adobe软件,如遇Error提示解决方法

    Mac10.15.3 安装Adobe Photoshop 2020的时候一直提示Error错误 The installation cannot continue as the installer fi ...

  8. 【Ansible】Ansible控制windows插件安装及运行error与解决方法

    一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: ![1_2] 二.问:安装kerberos报错 答:需要先安装libkrb5开发包 ...

  9. 安装DotNetCore.1.0.0-VS2015Tools.Preview2.exe 错误Error 0x81f40001 解决方法

    安装DotNetCore.1.0.0-VS2015Tools.Preview2.exe 错误Error 0x81f40001 解决方法 参考文章: (1)安装DotNetCore.1.0.0-VS20 ...

最新文章

  1. 【Oracle Database】数据库用户管理
  2. 【题解】P1029 最大公约数和最小公倍数问题
  3. 1.python的安装
  4. VS2005工程由Pocket PC 2003 SDK转为WINCE6.0 SDK的问题
  5. Android 中基本图像绘制
  6. 8 线程安全且高效的单例模式
  7. 漫画:什么是 “元宇宙” ?
  8. python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)
  9. html在线测试 css,HTML+CSS测试
  10. Windows7 x64在Wampserver上安装memcache
  11. SAStruts アクションにJSONを返すメソッドを作成してみる
  12. 【SQL】实验三 视图管理和使用
  13. git fatal: destination path ‘**‘ already exists and is not an empty directory.解决
  14. 恒凯USB数据采集卡在国产麒麟操作系统下的应用(四)QT环境设置及数据采集实验
  15. mysql jena rdf_Jena 操作 RDF 文件
  16. (兼职月赚两万?)程序员如何接私活? 如何让自己的知识变现?
  17. SublimeText 3汉化版安装教程和创建第一个HTML网页
  18. Appium 按压元素进行滑动
  19. 表格固定表头,tbody加滚动条
  20. [教程资源] HTC Vive UI Guideline

热门文章

  1. 如何为firefox安装视频播放器
  2. 【HDU】4942 Game on S♂play 线段树
  3. NLP- 关键词提取 - 综述
  4. 我要吐槽各大自媒体平台的权重问题
  5. 01 电阻的简介及常见电路分析
  6. js身份证号校验方法(转载我的请注明哈哈)
  7. Unity 之 Mac包运行本地日志位置
  8. NamingContainer取得 GridView的列数(RowIndex)、对应的资料表 这一列的主索引键
  9. 《3D ISP核心技术算法》系列(1)——ToF测量中的多径现象与消除方法
  10. 哪一句话,能燃起你的斗志