私のクラスには次の機能があります。
bool ncread_llt::get_dataArray_atOnce (float **data)
{
startp[0]=0;
countp[0]=ntime;
float vdata[ntime][nlat][nlon];
dataVar.getVar(startp, countp, &vdata);
int offset=0;
for(int t =0; t<ntime; t++)
{
for (int i = 0; i < nlat - 1; i++)
{
for (int j = 0; j < nlon - 1; j++)
{
offset=i*nlat+j;
data[t][offset]=vdata[t][i][j];
}
}
}
return(true);
}
そして、私はこのようにメインプログラムでそれを呼び出します
float **rain[ntime][rain_pts]; //I get segfault in the next line.
ncf1.get_dataArray_atOnce (**rain); //ncf1 is an object of the classs ncread_llt
これはベクトル表記で機能しますが、入力として 2 次元配列を必要とするライブラリ関数を使用する必要があります。ここで何を間違えているのかわかりません。ポインター表記のいくつかの組み合わせを試しましたが、コンパイルされず、コンパイルすると(上記の組み合わせ)、セグメンテーション違反が発生します。このコードに何か問題がありますか? また、なぜコンパイルされるのですか?