美文网首页
VS C++报错:二进制"<":没有找到接受"const _Ty

VS C++报错:二进制"<":没有找到接受"const _Ty

作者: Ioixy | 来源:发表于2019-01-15 17:15 被阅读0次

    Visual Studio
    错误 C2678:二进制“<”: 没有找到接受“const _Ty”类型的左操作数的运算符(或没有可接受的转换)
    c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\xstddef 141

    这个错误的意思是,找不到或错误定义了自定义类的"<"比较运算符。

    首先检查类的定义。并没有定义"<"比较运算符,也没有调用std::sort之类的函数,更没有用到比较操作。为什么会报错呢?经查找,发现我失手把类用作了std::map的key类!而std::map是一个有序关联容器,这意味着它在内部会给key排序。这就出现了以上错误信息。

    解决办法一:把所有的std::map换成std::unordered_map,注意包含库文件#include <unordered_map>,简单操作一番,还是不行!它得有索引,也就是一个哈希值函数。问题的解决反而被复杂化了。

    参考文章

    解决办法二:没有比较运算符,那就定义一个?<可读性下降!>勉强能行,将就用吧。

    如果有更好的方法欢迎评论区交流!

    相关文章

      网友评论

          本文标题:VS C++报错:二进制"<":没有找到接受"const _Ty

          本文链接:https://www.haomeiwen.com/subject/lpbydqtx.html