Комплекс & л; двойной & GT; не может использовать imag (), complex (), real ()

У меня проблема при использовании функций из 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 ()

-1

Решение

У меня проблема при использовании функций из 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или специализация шаблона, чтобы указать тип. Как говорится в ошибке, вы не можете использовать шаблон, где вам нужен тип.

6

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

Вы хотите что-то вроде этого:

double k = N.real();
cmplx NI = cmplx(x,y);
double l = N.imag();
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector