私はC++が初めてです。
class ProjectionValue{
public:
int angleLength;
int detectorIndex_xLength;
int detectorIndex_yLength;
double ***matrix;
ProjectionValue(int angleLength, int detectorIndex_xLength, int detectorIndex_yLength);
~ProjectionValue();
};
メイン クラスで ProjectionValue クラス (自分のクラス) の 3 次元マトリックスを宣言しました。
ProjectionValue*** A_projection [10][10][5];
for(int x=0; x< A->Tomo->object3d->Nx; x++)
{
for(int y=0; y< A->Tomo->object3d->Ny; y++)
{
for(int z=0; z< A->Tomo->object3d->Nz; z++)
{
for( int kk=0; kk<11; kk++)
{
for(int m=0; m < A->Tomo->detector->Nx; m++ )
{
for(int n=0; n < A->Tomo->detector->Ny; n++ )
{
(**A_projection[x][y][z])->matrix[kk][m][n] = A->Tomo->ICD_projection(*A->Tomo->xraysource->Source,*A->Tomo->detector->GetCoordinates(m,n), initial_object, x, y, z);
}
}
A->Tomo->xraysource->RotateXRaySource(-5);
A->Tomo->detector->RotateDetector(-5);
}
}
}
}
「Form_Solution.exe で 'System.AccessViolationException' 型の未処理の例外が発生しました」を取り上げます。ここです:
(**A_projection[x][y][z])->matrix[kk][m][n] = A->Tomo->ICD_projection(*A->Tomo->xraysource->Source,*A->Tomo->detector->GetCoordinates(m,n), initial_object, x, y, z);
この問題に対して何ができますか? クラスの 3 次元行列の宣言に問題はありますか? 行列の割り当てメモリは必要ですか?どうすればできますか?