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);
我正在将 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);