使用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()函数的错误是相同的
答案 0 :(得分:6)
使用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
或模板特化本身来指定类型。如错误所示,您无法在需要类型的地方使用模板。
答案 1 :(得分:1)
你想要这样的东西:
double k = N.real();
cmplx NI = cmplx(x,y);
double l = N.imag();