我正在尝试编写一个函数,它接受两个数字并打印出它们的总和。
#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 ++程序,实际上我发现了一个错误。
答案 0 :(得分:20)
要么
result = ::plus(a,b);
或重命名该功能。这是一个很好的教训,为什么using namespace std
不被视为良好实践。
答案 1 :(得分:14)
std
namespace中已有一个名为plus
的功能对象。由于using namespace std;
,此std::plus
被放在全局命名空间中,这也是plus()
命名的地方。当您尝试呼叫plus()
时,编译器无法判断您是指std::plus
还是plus()
,因为它们都在全局命名空间中。
您有以下选择:
using namespace std;
(您需要在std
命名空间中对其他功能进行限定 - 例如std::cout
)。plus()
放入自己的命名空间(例如mine
),然后使用mine::plus(a, b)
进行调用。::plus()
as suggested(假设您没有将其放在自己的命名空间中)。