【问题标题】:c++ "no matching function to callc++"没有匹配的函数调用
【发布时间】:2012-05-27 14:46:30
【问题描述】:

当尝试将数组作为参数传递时,我得到:

"No matching function to call to ' table::retrieve(const char[16], item&, int)'

我正在尝试调用函数

program.reference.retrieve("Abecean Longfin", program.client_item, 1);

功能是

int table::retrieve(char item_in[],item*item_list, int name_flag)

我确定这很简单,我不明白,但我是新手。

【问题讨论】:

  • 我很惊讶没有人提到它,但std::string 会是一个更好的选择,包括更多的熟悉。如果将item_list 用作数组,则std::vector 可以很好地解决这个问题。

标签: c++ arrays pointers parameter-passing


【解决方案1】:

你的调用失败的真正原因是你传递了一个item&,而你的函数需要一个item*。您的代码违反了字符串的 const 正确性,但在 C++03 中,它们有一个特殊的规则使其合法。

【讨论】:

  • 我怎么会知道?显示的代码只说明了两件事:它是item&,原型是item*
  • @Als:是值还是引用都无关紧要。重要的是它不是指针。
  • @Als:这是一个参考,错误消息给出了一个“直接”函数匹配(这就是为什么它说const char[16],例如);它还显示item&
  • @Als:不是真的,因为修复是相同的,所以它绝对无关紧要。
  • @Als:没有人与您争论诊断消息取决于实施质量,我们只是说几乎可以肯定他没有通过参考。你肯定不是一直都在完全确定地思考吗?你甚至说:“这似乎是真正的原因。”该网站的目的确实是为似乎存在的问题提供解决方案。
猜你喜欢
  • 2021-09-21
  • 2016-11-23
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-10
相关资源
最近更新 更多