函数在向vector传递指针时是二义性的
c++: Function is ambiguous when passing pointers to vectors
在我的程序中,我有一个与两个向量一起工作的函数(实际上,程序必须求和两个数字,这些数字有大量的数字,但我认为这与此无关)。下面是代码
#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;
}
当我试图编译它时,它说"对'plus'的引用是模糊的"。有什么问题吗?
虽然这里给出的所有答案在技术上都是正确的,但我认为只有一个可持续的解决方案:
移除using namespace std;
。不幸的是,许多教程和书籍都在教授如何使用这种方法,但它带来了许多问题,您刚刚看到的就是其中之一。要更好地了解using
和名称空间,请阅读Herb Sutter关于这个问题的文章:http://www.gotw.ca/publications/migrating_to_namespaces.htm
有一个函数std::plus
是混淆编译器。
重命名您的函数或说::plus
调用它。
http://www.cplusplus.com/reference/functional/plus/
plus
是标准c++库中的一个函数。
避免使用::plus
当一个函数是"二义性的"时,这意味着已经存在一个具有相同名称和结构的函数。因此,正如其他人提到的,std::plus与您的定义相冲突,并且编译器不知道使用哪个。
重命名方法,或者调用::plus
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- 函数在向vector传递指针时是二义性的