Ошибка: в качестве левого операнда присваивания требуется 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 );
2 ответа
Вы пытаетесь присвоить значение результату std::real
что является значением.
Это так же важно, как писать
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 ));
Он будет работать только с C++11, используя следующую информацию: http://www.cplusplus.com/reference/complex/complex/real/