【发布时间】: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符号。尝试为 yourdistance加上::前缀,如::distance d1;
标签: c++ reference c++17 friend-function ambiguous-call