3

在我的程序中,我有一个可以处理两个向量的函数(实际上,程序必须将两个具有大量数字的数字相加,但我认为这与此无关)。这是代码

#include <iostream>
#include <vector>

using namespace std;

void plus (vector <int> *n1, vector <int> *n2)
{
    // my code here
}


int main()
{
    unsigned int i;
    vector <int> n1, n2;
    for (i = 1; i < 5; ++i)
    {
        n1.push_back (i);
    }
    for (i = 9; i > 5; --i)
    {
        n2.push_back (i);
    }
    plus (&n1, &n2);
    return 0;
}

当我尝试编译它时,它说“对'加号'的引用是模棱两可的”。问题是什么?

提前致谢。

4

4 回答 4

4

虽然这里给出的所有答案在技术上都是正确的,但我认为只有一个可持续的解决方案:

删除using namespace std;. 不幸的是,很多教程和书籍都教授了它,但它带来了很多问题,其中一个你刚刚目睹过。要更好地了解using命名空间,请阅读 Herb Sutter 关于此问题的文章:http ://www.gotw.ca/publications/migrating_to_namespaces.htm

于 2013-02-28T07:19:08.893 回答
2

有一个功能std::plus使编译器感到困惑。

重命名您的函数或说::plus调用它。

于 2013-02-28T07:15:31.770 回答
1

http://www.cplusplus.com/reference/functional/plus/

plus是标准 C++ 库中的一个函数。

避免它::plus

于 2013-02-28T07:16:30.340 回答
1

当一个函数是“模糊的”时,它意味着已经存在一个同名和结构的函数。因此,正如其他人提到的, std::plus 与您的定义冲突,编译器不知道使用哪个。

重命名方法,或调用::plus.

于 2013-02-28T07:17:51.517 回答