Windowsマシン上のQTの同じコードを実行するとこのエラーが発生しますが、linuxを使用すると正しく動作します機械。エラー:lvalueが代入の左側のオペランドに必要です
unsigned int width = Width, height = Height, slice = Slice;
typedef boost::multi_array<std::complex<double>,3> IMAGE;
typedef IMAGE::index im;
IMAGE Image(boost::extents[slice][height][width]);
for (im i = 0; i < slice; i++)
{
for (im j = 0; j < height; j++)
{
for (im k = 0; k < width; k++)
{
Image[i][j][k].real() = image[i][j][k];
Image[i][j][k].imag() = 0;
}
}
}
はコンパイラの違いによりエラーですか?または何か私は行方不明ですか? Linuxのバージョンは、GCCコンパイラを持ち、WindowsのバージョンがMINGW 32ビット
'実数()'と 'IMAG()'は何を返すのですか? –
@serpentorが正しいです。彼らは 'double'ではなく' double'を返します。代わりに 'Image [i] [j] [k] .real(image [i] [j] [k]);'を使用してください。 – ilotXXI
@Gill Bates real()は画像の実数部分を返し、imag()は画像の虚数部分を返します。画像に複素数値があると仮定します。 – serpentor