我正在尝试编写一个函数,它接受两个数字并打印出它们的和。
#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()
,因为它们都在全局命名空间中。
您有以下选项:
- 删除
using namespace std;
(然后需要限定std
命名空间中的其他函数,例如std::cout
( - 将您的
plus()
放在自己的名称空间(比如mine
(中,并使用mine::plus(a, b)
调用它 - 按照建议使用
::plus()
调用函数(假设您没有将其放在自己的命名空间中( - 重命名函数,以避免名称冲突