【发布时间】:2009-10-07 10:26:47
【问题描述】:
当使用 GNU C++ 编译器编译我的代码时,我会得到类似的东西
bla.cxx: In function `int main(int, const char**)':
bla.cxx:110: error: no matching function for call to `func(const classA*&, const classB<classC>*&) const'
someheader.h:321: note: candidates are: bool func(const classA*, const T*&, const std::string&, std::string&) [with T = classB<classC>] <near match>
<near match> 表示什么以及如何解决此错误?
(我在没有(希望)删除必要信息的情况下尽可能简化了错误消息。实际上,我宁愿不在这里举一个明确的例子,而是鼓励对这个问题做出一般性的回答!)
【问题讨论】:
-
为了将来的参考,最好有产生消息的实际代码行(如果可能的话,一个完整的 sn-p,即使有点剥离)。在这里,我们可以回答您的实际问题,但我们不能做得更好,比如更准确地为您指明正确的方向。
-
我没有将导致错误的代码行放在这里有两个原因:1)它本身没有帮助(看起来像 getFeature(te, a) :) 2)我无法添加一个 sn-p,因为有问题的行是一个非常复杂的软件框架的一部分,这使得在不改变整体行为的情况下很难从那里提取它。
-
他们是。特别是因为问题本身不依赖于明确的例子。它只是询问编译器在其重载决议建议中添加“
”的情况。我认为这个例子只会分散读者对我最初想知道的内容的注意力。
标签: c++ templates compilation