void * bufferパラメータを取ります。この関数は、HDF hereによって提供されています。私の理解では、データセットの情報をバッファに読み込みます。これは動作しますが、定数値を使用して3次元のint配列を作成する場合に限ります。ユーザによって渡された値を使用して ここでは、その関数の始まりです:パラメータで渡されたC++での3D配列の作成
void* getDataTest(int countX, int countY)
{
int NX = countX;
int NY = countY;
int NZ = 1;
int data_out[NX][NY][NZ]; //I know this doesn't work, just posting it for reference
//.
//. more code here...
//.
// Read function is eventually called...
h5Dataset.read(data_out, H5::PredType::NATIVE_INT, memspace, h5Dataspace);
}
これは常に私に失敗しかし、DATA_OUTの配列を作成するときのconst int型の値を使用し、私のprevioud実装がうまく働いた:。
をvoid* getDataTest(int countX, int countY)
{
const int NX = 5;
const int NY = 5;
const int NZ = 1;
int data_out[NX][NY][NZ];
//.
//. more code here...
//.
// Read function is eventually called...
h5Dataset.read(data_out, H5::PredType::NATIVE_INT, memspace, h5Dataspace);
}
これはうまくいきます。私の理解から、この機能(私はcontロールオーバー)は、同じ次元のデータ空間を必要とする。 3D配列は3D配列でしか動作しませんが、2D配列はデータをバッファにコピーする際に2D配列でのみ動作します)。
ここで私の重要な問題は、読み込み関数が満足する3D int配列を作成する方法を理解できないように思えることです(関数のパラメータはvoid *ですが、 3d int配列以外は動作しません)。私は配列の配列として表現された3D int配列を試しました:
これも同様に失敗しました。どのように私はint arrayName [非定数値] [非定数値] [非定数値]の形式の3D int配列を作成することができます上の任意のアイデア?私は定数ではない値を使って配列を作成できないことを知っていますが、目標を明確にするためにそれらを追加しました。配列をインスタンス化するための値として関数のパラメータを使用するC++の方法があるでしょうか?
:https://support.hdfgroup.org/HDF5/doc/cpplus_RM/class_h5_1_1_data_set.html#a2f0278a519122419ae9981666277c9bb – Creak
おかげで、私は投稿を更新しました。 – Roka545