2015-02-10 1 views
0

Я компилирую код C++ для запуска DFT. Я использую quadmath в своем коде и генератор случайных чисел, чтобы добавить к нему шум. Во время выполнения кода, как:ошибка: lvalue требуется как левый операнд присваивания с использованием генератора квадратов и случайных чисел

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, это работало отлично. –

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/

Смежные вопросы