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

时间:2015-07-23 16:52:23

标签: 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;
}

我得到的错误:

use of `plus' is ambiguous

这是我的第一个C ++程序,实际上我发现了一个错误。

2 个答案:

答案 0 :(得分:20)

要么

result = ::plus(a,b);

或重命名该功能。这是一个很好的教训,为什么using namespace std不被视为良好实践。

答案 1 :(得分:14)

std namespace中已有一个名为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. Call your function with ::plus() as suggested(假设您没有将其放在自己的命名空间中)。
  4. 重命名该功能,以便没有名称冲突。