0
#include <complex> 
using namespace std; 

mx_vector = new double [NX]; //NX = 200 
imx_vector = new complex<double> [NX]; 

i = 1; 
imx_vector[i].real() = 0.0; 
imx_vector[i].imag() = mx_vector[i]; //mx_vector[i] = 2.2 

//This is part of a big program, so hiding the simple details like main() etc. 

Привет, У меня есть этот код и хорошо работал с intel C++ в redhat linux. Теперь, когда я скомпилирую его в VS 2010, я получаю ошибку «ошибка C2106: '=': левый операнд должен быть l-значением». Я посмотрел сообщение MSDN ref, предыдущие сообщения в стеке, но не смог его исправить. Есть ли что-то общее с «новым»?номера со сложным номером в VS 2010

Любая помощь/ссылка будет оценена по достоинству.

ответ

4

imx_vector[i].real(), а также imx_vector[i].imag() возвращение double, а не double&.

Вы, вероятно, имел в виду (C++ 98):

imx_vector[i] = std::complex<double>(0.0, mx_vector[i]); 

или (C++ 11):

imx_vector[i].real(0.0); 
imx_vector[i].imag(mx_vector[i]); 
+0

Awesome, вторая версия сделал трюк. Благодаря тонну... –