错误:需要使用四进制和随机数生成器作为左操作数的左值

问题描述 投票:0回答:2

我正在编译C ++代码以运行DFT。我在代码中使用四边形,并使用一个随机数生成器为其添加了噪声。以以下方式运行代码:

g++ code.cc -lquadmath -o quad

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

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

这给出了作为赋值左操作数所需的错误级别。引发此错误的代码行是:

std::real(output_seq[y]) =std::real(output_seq[y])+( V2[x] * cosineA );
c++ random
2个回答
3
投票

您正在尝试为std::real的结果分配一个值,即rvalue

和写作一样有意义

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

所以您可能想这样做

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

2
投票

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

您想做的可能是以下事情:

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

仅使用以下信息http://www.cplusplus.com/reference/complex/complex/real/才能在C ++ 11中使用

© www.soinside.com 2019 - 2024. All rights reserved.