编辑:感谢大家花时间回答。我一一尝试了大家的建议,还是不行。我真的很想把这个交上来,而不必向教授寻求帮助,并表明我不知道该怎么做,但在这一点上,我想我必须这样做。感谢您抽出时间提供帮助!谢谢。
我正在学习 C++ 类(class),但有一项作业让我遇到了麻烦。我不断收到错误消息:所有三个数组声明均出现“expected primary-expression before ‘int’”。并且所有三个传递地址都“未在此范围内声明”。这是我通常使用的编译器。我尝试了不同的编译器,我得到的错误是“prog.cpp:14:38: error: cannot convert 'std::array' to 'int' for argument '1' to 'void addArrays(int*, int*, int*)' addArrays(&array1,&array2,&array3);" 我不太确定发生了什么,因为我是初学者,希望有人能告诉我这些错误的含义以及我可以做些什么来修复它们。先感谢您。这是我的代码:
#include <iostream>
#include <array>
using namespace std;
void addArrays(int*, int*, int*);
int main()
{
array< int, 20 >array1 =
{7,45,90,1,33,254,3,8,9,4,2,6,77,5,9,2,22,4,12,6};
array< int, 20 >array2 =
{88,4,6,75,1,12,33,99,66,88,7,4,44,4,3,13,5,4,9,3};
array< int, 20 >array3;
addArrays(&array1,&array2,&array3);
cout << "Array1 + Array2 = Array3" << endl;
int j;
for(j=0; j<20; ++j)
cout << array1[j] << "+" << array2[j] << "=" << array3[j] << endl;
return 0;
}
void addArrays(int *array1, int *array2, int *array3)
{
int i;
for(i=0; i<20; ++i)
array3[i] = array1[i]+array2[i];
}
最佳答案
如果你想让函数保持不变 void addArrays(int *array1, int *array2, int *array3)
你可以使用 std 的
。data
方法::数组
#include <iostream>
#include <array>
using namespace std;
void addArrays(int*, int*, int*);
int main()
{
array< int, 20 >array1 =
{7,45,90,1,33,254,3,8,9,4,2,6,77,5,9,2,22,4,12,6};
array< int, 20 >array2 =
{88,4,6,75,1,12,33,99,66,88,7,4,44,4,3,13,5,4,9,3};
array< int, 20 >array3;
addArrays(array1.data(),array2.data(),array3.data());
cout << "Array1 + Array2 = Array3" << endl;
int j;
for(j=0; j<20; ++j)
cout << array1[j] << "+" << array2[j] << "=" << array3[j] << endl;
return 0;
}
void addArrays(int *array1, int *array2, int *array3)
{
int i;
for(i=0; i<20; ++i)
array3[i] = array1[i]+array2[i];
}
或者使函数将 std::array
作为参数,如下所示:
#include <iostream>
#include <array>
using namespace std;
void addArrays(const array<int,20> &array1,
const array<int,20> &array2,
array<int,20> &array3);
int main()
{
array< int, 20 >array1 =
{7,45,90,1,33,254,3,8,9,4,2,6,77,5,9,2,22,4,12,6};
array< int, 20 >array2 =
{88,4,6,75,1,12,33,99,66,88,7,4,44,4,3,13,5,4,9,3};
array< int, 20 >array3;
addArrays(array1,array2,array3);
cout << "Array1 + Array2 = Array3" << endl;
int j;
for(j=0; j<20; ++j)
cout << array1[j] << "+" << array2[j] << "=" << array3[j] << endl;
return 0;
}
void addArrays(const array<int,20> &array1,
const array<int,20> &array2,
array<int,20> &array3)
{
int i;
for(i=0; i<20; ++i)
array3[i] = array1[i]+array2[i];
}
关于c++ - 似乎无法在 C++ 中正确调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37324955/