"Use of plus() is ambiguous"错误



我正在尝试编写一个函数,它接受两个数字并打印出它们的和。

#include <iostream>
using namespace std;
int plus(int, int);
int main () {
 int a, b, result;
 cout << "2 numbrs";
 cin>>a>>b;
 result = plus(a,b);
 cout << result;
 return 0;
}
int plus(int a,int b) {
 int sum;
 sum = a+b;
 return sum;
}

我得到的错误:

use of `plus' is ambiguous

这是我的第一个C++程序,事实上我发现一个错误是盲目的。

要么进行

result = ::plus(a,b);

或者重命名函数。这是一堂很好的课,说明为什么using namespace std不被认为是良好的实践。

std命名空间中已经有一个名为plus的函数对象。由于using namespace std;,这个std::plus被放在全局命名空间中,这也是plus()的命名位置。当您尝试调用plus()时,编译器无法判断您引用的是std::plus还是plus(),因为它们都在全局命名空间中。

您有以下选项:

  1. 删除using namespace std;(然后需要限定std命名空间中的其他函数,例如std::cout(
  2. 将您的plus()放在自己的名称空间(比如mine(中,并使用mine::plus(a, b)调用它
  3. 按照建议使用::plus()调用函数(假设您没有将其放在自己的命名空间中(
  4. 重命名函数,以避免名称冲突

相关内容

最新更新