我正在编译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 );
您正在尝试为std::real
的结果分配一个值,即rvalue。
和写作一样有意义
5.0f = std::real(output_seq[y]) + (V2[x] * cosineA);
所以您可能想这样做
output_seq[y] = std::real(output_seq[y]) + (V2[x] * cosineA);
您正在尝试为数字分配值。 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中使用