-1

使用 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

请为您的帮助

谢谢


编辑

再次感谢您的帮助,但现在我有一个新问题。如果我有一个 cmplx 数字的数组 Arr[N],现在我需要我写的 Arr[i] 的实部

realArray[5] = ComplexArray[5].real();

我收到一个错误:

error: expression must have class type

real() 或 imag() 函数的错误是相同的

4

2 回答 2

6

使用 complex.h 中的函数时遇到问题

没有具有该名称的标准标题。我假设你的意思是<complex>; 否则,您将包含史前或非标准库或 C 库。无论如何,您应该更改为<complex>.

第一行和第三行应该没问题。realimag被定义为在您使用它们时可用的非成员函数,或作为可用作N.real()和的成员函数N.imag()

第二行应该是以下之一:

cmplx NI = cmplx(x,y);
cmplx NI = complex<double>(x,y);
cmplx NI(x,y);

使用您的类型别名cmplx或模板专业化本身来指定类型。正如错误所说,您不能在需要类型的地方使用模板。

于 2013-09-17T14:01:41.913 回答
1

你想要这样的东西:

double k = N.real();
cmplx NI = cmplx(x,y);
double l = N.imag();
于 2013-09-17T13:57:47.707 回答