【问题标题】:How to make g++ operator overloading errors more concise?如何使 g++ 运算符重载错误更简洁?
【发布时间】:2012-09-26 21:33:25
【问题描述】:

我不时犯一个运算符重载错误,导致 g++ 生成令人沮丧的大量编译器错误消息,请考虑以下示例:

int someValue ;
vector <vector <int> > 2d ;
while(2d [i] > someValue) someFunction();

显然,我缺少“2d”向量的第二个索引。不幸的是,g++ 没有简明扼要地报告它未能找到“大于”运算符的匹配项,而是详细列出了每个与比较操作部分匹配的重载候选者,包括一些深埋在标准库中的非常讨厌的重载候选者。

谁能提供一些关于为什么这是处理重载失败的首选方法的一些见解?是否有任何选项可以限制或缩减此编译器输出?谢谢。

【问题讨论】:

  • 您是否将 ints(2d[i]) 上的向量与 int(somevalue) 进行比较?
  • 是时候切换到 clang 了吗?
  • @H2CO3,g++ 在高水平优化方面仍然比 clang 更有优势
  • @ahenderson,目的是将 2d [i][j] 与 int(someValue) 进行比较
  • 我明白了。很抱歉造成混乱。

标签: c++ compiler-errors g++ operator-overloading


【解决方案1】:

试试STLFilt。但是有一段时间没有更新了。

一个好的 IDE 应该对这些烦人的额外错误进行一些过滤——在我使用 Eclipse 的时候,它有很好的过滤——但是我现在不知道它是如何做到的。

我个人的做法是跳过我不理解的所有内容,专注于我理解的错误;)

【讨论】:

    猜你喜欢
    • 2017-01-17
    • 2013-11-14
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2017-08-10
    相关资源
    最近更新 更多