"使用plus()是不明确的"错误

Jac*_*08H 8 c++ function add

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

#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;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

use of `plus' is ambiguous
Run Code Online (Sandbox Code Playgroud)

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

yiz*_*lez 20

要么这样做

result = ::plus(a,b);
Run Code Online (Sandbox Code Playgroud)

或者重命名该功能.这是一个很好的教训,为什么using namespace std不被认为是良好的做法.

  • @ Jac08H阅读http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice (4认同)
  • @ Jac08H没有必要将您的问题标记为已修复.你可以接受适当的答案. (2认同)

Nul*_*ull 14

目前已经是一个函数对象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. 重命名该函数,以便没有名称冲突.