Я получаю эту ошибку 'lvalue, требуемую как левый операнд назначения', когда запускает один и тот же кусок кода в QT на компьютере Windows, но отлично работает, когда я использую 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 компилятор и версия окна использует MinGW 32 Bit
Что 'реальные()' и 'емк()' вернуть? –
@serpentor - это правильно. Они возвращают 'double', а не' double & '. Используйте 'Image [i] [j] [k] .real (изображение [i] [j] [k]); вместо этого. – ilotXXI
@ Gill Bates real() возвращает реальную часть изображения, а imag() возвращает мнимую часть изображения. Предполагая, что изображение имеет сложные значения. – serpentor