错误:左值作为赋值的左操作数需要做什么

时间:2016-07-08 10:34:04

标签: c++ qt

我收到此错误'左值作为分配的左操作数'当在Windows机器上在QT中运行相同的代码时,但当我使用Linux机器时工作正常。

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位

1 个答案:

答案 0 :(得分:5)

real()imag()返回可分配引用是libstdc ++(source)的非标准扩展。如果您在g ++中设置-std=c++1y,则会收到相同的错误。

要更改值,您应该使用&#39; setter&#39;版本代替:

Image[i][j][k].real(image[i][j][k]);
Image[i][j][k].imag(0);