2015-02-10 55 views
0

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

回答

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); 
+0

謝謝Axalo,這工作得很好。 – 2015-02-11 00:21:18

2

您正在嘗試爲數字指定值。 std::real(output_seq[y])將您複數的實數部分作爲值返回。您不能爲其分配新值,因爲它不代表地址位置。

你想要做什麼可能是以下幾點:

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

它將與C++ 11只使用工作http://www.cplusplus.com/reference/complex/complex/real/

相關問題