error: lvalue required as left operand of assignment using quadmath and random number generator

error: lvalue required as left operand of assignment using quadmath and random number generator

我正在将 C++ 代码编译为 运行 DFT。我在我的代码中使用 quadmath 和一个随机数生成器来增加噪音。 运行将代码设为:

g++ code.cc -lquadmath -o quad

我没有收到任何错误并且编译成功, 但是由于使用了随机数生成器,我不得不编译为

g++ code.cc -lquadmath -std=gnu++0x -o quad

给出了一个错误 lvaule 作为赋值的左操作数。 引发此错误的代码行是:

std::real(output_seq[y]) =std::real(output_seq[y])+( V2[x] * cosineA );

您正在尝试为数字赋值。 std::real(output_seq[y]) returns 复数的实部作为值。您不能为其分配新值,因为它不代表地址位置。

你要做的大概是:

output_seq[y].real(std::real(output_seq[y])+( V2[x] * cosineA ));

它仅适用于 C++11,使用以下信息 http://www.cplusplus.com/reference/complex/complex/real/

您正在尝试为 std::real 的结果赋值,它是 rvalue

这和写作一样有意义

5.0f = std::real(output_seq[y]) + (V2[x] * cosineA);

所以你可能想改为这样做

output_seq[y] = std::real(output_seq[y]) + (V2[x] * cosineA);