私は配列のポインタ(私のプログラムにいくつかの関数で必要なパラメータを含む)を構造体に渡そうとすると問題が発生します。構造体に渡す必要があります。例えば、GSLは私にこのようにパラメータを渡すことを望んでいます。静的な2D配列のポインタを構造体/クラスに渡すにはどうすればよいですか?
#include <iostream>
using namespace std;
struct myparams
{
double * a;
double ** b;
};
int main()
{
double c[10] = {0,1,2,3,4,5,6,7,8,9};
double d[4][3] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
double** e = new double*[4];
for (int i = 0; i < 4; i++) {
e[i] = new double[3];
}
myparams params;
// THIS WORKS:
params.a = c;
for (int i = 0; i < 10; i++) {
cout << params.a[i] << endl;
}
// THIS DOESN'T WORK
params.b = d;
// THIS WORKS:
params.b = e;
delete[] e;
}
コンパイラが"cannot convert 'double[4][3]' to 'double**' in assignment"
または(ドイツ語からの翻訳)そのようなことで文句を言う
params.b = d
に問題がどのようなものです:
小さなプログラム例では、このようになります。
'double [n] [m]'は 'double **'には減衰できませんが、 'double [n]'は 'double *'に減衰することができます。そのため、最初の割り当ては有効で、後者は有効ではありません。 – Zeta
http://stackoverflow.com/a/13273979/560648およびhttp://stackoverflow.com/a/9557855/560648およびhttp://stackoverflow.com/a/7139014/560648 –
また、これはもう一度動作しません "! –