我编写了将一个数组的元素复制到另一个数组的代码,我收到了这个错误。
#include <iostream>
using namespace std;
void copy(const int* a, int* b, int size =5)
{
for ( int i=0; i<size; i++)
{
b[i] = a[i];
}
}
int main()
{
int a[] = {1,2,3,4,5};
int b[5];
copy(a,b,5);
cout << b << endl;
}
答案 0 :(得分:3)
由于这个愚蠢的std::copy
,::copy
和using namespace std
之间存在冲突。 std::copy
采用不同的论点,其中第三个不是int
,就像你的版本一样。
使用::copy
调用它或完全停止使用using namespace std
。
顺便说一下,我不明白你期望cout << b << endl
做什么?数组没有内置的格式化专业化。
答案 1 :(得分:0)
为什么不使用
的另一个好样本using namespace std;
已经声明了std::copy()
函数的。如果声明了该函数,它实际上是特定于实现的,包含的头文件。 无论如何,看起来你已经画了一根短小的稻草,你的功能声明/定义变得含糊不清。
您可以明确地引用全局命名空间来解决这个问题:
::copy(a,b,5);
// ^^
如果从
收到指针地址值,也不要怀疑cout << b << endl;
这正是预期的结果。您需要一个循环来输出该数组中的各个值。