ошибка: в качестве левого операнда присваивания требуется lvalue с использованием генератора квадратов и случайных чисел

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

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

0

Решение

Вы пытаетесь присвоить значение результату std::real который является Rvalue .

Это так же важно, как писать

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

Таким образом, вы, вероятно, хотите сделать это вместо

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

Другие решения

Вы пытаетесь присвоить значение номеру. 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/

2

По вопросам рекламы [email protected]