У меня проблема при использовании функций из complex.h
У меня есть цифры
typedef complex<double> cmplx;
cmplx N;
double x;
double y;
и теперь мне нужны операции над ними:
double k = real(N);
cmplx NI = complex(x,y);
double l = imag(N);
ничего из этих работ. В чем дело? Я пытался написать creal, cimag, но ничего не работает … Компилятор пишет:
error: argument list for class template "std::complex" is missing
Пожалуйста за вашу помощь
Спасибо
РЕДАКТИРОВАТЬ
Еще раз спасибо за вашу помощь, но теперь у меня новая проблема. Если у меня есть массив Arr [N] чисел cmplx, и теперь мне нужна вещественная часть Arr [i], которую я написал
realArray[5] = ComplexArray[5].real();
Я получаю ошибку:
error: expression must have class type
ошибка одинакова для функций real () или imag ()
У меня проблема при использовании функций из complex.h
Нет стандартного заголовка с таким именем. Я предполагаю, что вы имеете в виду <complex>
; в противном случае вы используете либо доисторическую, либо нестандартную библиотеку, либо библиотеку C. В любом случае вы должны изменить на <complex>
,
Первая и третья строки должны быть в порядке. real
а также imag
определяются как функции, не являющиеся членами, используемые при их использовании, или как функции-члены, используемые как N.real()
а также N.imag()
,
Вторая строка должна быть одной из:
cmplx NI = cmplx(x,y);
cmplx NI = complex<double>(x,y);
cmplx NI(x,y);
либо используя ваш псевдоним типа cmplx
или специализация шаблона, чтобы указать тип. Как говорится в ошибке, вы не можете использовать шаблон, где вам нужен тип.
Вы хотите что-то вроде этого:
double k = N.real();
cmplx NI = cmplx(x,y);
double l = N.imag();