我参加了一门C ++课程并完成了我遇到麻烦的任务。我一直收到错误:"在' int'"'''''''通过所有三个数组声明。 "未在此范围内宣布"通过所有三个传递地址。这是我经常使用的编译器。我尝试了一个不同的编译器,我得到的错误是" prog.cpp:14:38:错误:无法转换' std :: array '到' int '争论' 1' to' void addArrays(int *,int *,int *)' addArrays(安培; ARRAY1,&安培;数组2,&安培; 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];
}
答案 0 :(得分:1)
如果您希望保留该功能void addArrays(int *array1, int *array2, int *array3)
您可以使用data
的{{1}}方法。
std::array
或者让函数将#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];
}
s作为这样的参数:
std::array
答案 1 :(得分:0)
更改功能声明,如
void addArrays( const std::array<int. 20> &,
const std::array<int, 20> &,
std::array<int, 20> &);
并将其称为
addArrays( array1, array2, array3 );
另一种方法是将函数声明为
void addArrays( const int *, const int *, int * );
但称之为
addArrays( array1.data(), array2.data(), array3.data() );
答案 2 :(得分:0)
以下签名
addArrays(int*, int*, int*);
不接受std:数组 - 如果将其更改为
,则会编译void addArrays(array< int, 20 > *array1, array< int, 20 > *array2, array< int, 20 > *array3)
{
int i;
for(i=0; i<20; ++i)
(*array3)[i] = (*array1)[i]+(*array2)[i];
}
如果您将原型更改为
void addArrays(array< int, 20 > &array1, array< int, 20 > &array2, ......)
答案 3 :(得分:0)
您的功能期待export interface IDatabaseModel extends any
{
}
并且您正在通过int*
。
试试这个。
array<int,20>*