c++ - 错误 : lvalue required as left operand of assignment what to do

标签 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位

最佳答案

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

要更改值,您应该改用“setter”版本:

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

关于c++ - 错误 : lvalue required as left operand of assignment what to do,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38264539/

相关文章:

c++ 11递归类模板到复杂错误

c++ - 无法在 C++ 中使用 ReadConsoleInput 读取鼠标事件

c++ - OpenMP 4 中的任务依赖性

qt - 像过滤事件一样过滤 Qt 信号

c++ - 这是插入排序吗?

C++模板非类型参数类型推导

c++ - 在 Qt 中确定父窗体的类型

c++ - 在不使用 QT 的情况下运行 C++ 事件循环

c++ - Qt 5.7 和 5.11 版本之间的演变有多重要?

c++ - Qt父机制