【问题标题】:Deciphering a function overload not found error message解密未找到函数重载错误消息
【发布时间】:2012-06-21 00:44:30
【问题描述】:

我有以下代码:-

class A : public B {
  public:
    _container (B* b) { 
      container_ = b;
    }
  private:
    B* container_;
};

void foo(const A& a, const B& b) {
  A new_a (a);
  new_a._container(&b);
}

如果我尝试使用 icpc12 编译它,我会得到:-

error: no instance of overloaded function "A::_container" matches the argument list
            argument types are: (const B *)
            object type is: A
      new_a._container (&b);

现在,我了解到错误的第一行意味着被调用的函数与可用的函数定义之间存在某种类型的不匹配,我正在尝试使用错误的其他两行来缩小问题的范围信息。

第二行和第三行是什么意思?

【问题讨论】:

    标签: c++ linux icc


    【解决方案1】:

    该函数将一个非常量指针作为参数,而您正在传递一个 const 指针。

    【讨论】:

    • 很好,修复了错误,但我仍然不明白这两行是什么。几乎没有任何 const-ness 不匹配的迹象。
    • 第二行告诉你你给它一个参数const B*。第三行告诉您该方法属于 A 类。第一行告诉您没有采用 const B* 的该名称的方法 - 您只需查看 A::_container 的签名是什么就可以看到没有const B*,仅B*
    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 2019-07-19
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多