【问题标题】:Error reference to 'distance' is ambiguous [duplicate]对“距离”的错误引用不明确[重复]
【发布时间】:2021-01-07 21:41:27
【问题描述】:

我无法弄清楚为什么会收到错误“reference to 'distance' is ambiguous”。
我已将类对象作为参数传递给友元函数。

#include <iostream>
using namespace std;

class distance {
    int meters = 0;
public:
    distance() {}
    void displaydata() {
        cout << "Meters Value:" << meters;
    }
    //Prototype
    friend void addvalue(distance &d);
};

void addvalue(distance &d) {
    d.meters += 5;
}

int main() {
    distance d1; // meters = 0
    d1.displaydata(); // 0
    // The friend function call
    addvalue(d1); // pass by reference
    d1.displaydata();
}

【问题讨论】:

  • 因为你是using namespace std;。不要那样做,it's a bad practice to do so
  • 已经有一个std::distance 函数。由于您将所有 std 符号包含到您的命名空间中,编译器可能会混淆您指的是哪个 distance 符号。尝试为 your distance 加上 :: 前缀,如 ::distance d1;

标签: c++ reference c++17 friend-function ambiguous-call


【解决方案1】:

如果您删除 using namespace std; 并将 cout 更改为 std::cout,那么您的代码编译不会出错。

发现歧义的来源保留为an exercise to the reader

【讨论】:

  • 已经尝试过了,但对我没有用。
  • 但我找到了一个解决方法,我所要做的就是将“距离”更改为“距离”,并且歧义已修复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2019-12-22
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 2016-09-06
相关资源
最近更新 更多