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

1 行目と 3 行目は問題ないはずです。realimagは、使用するときに使用できる非メンバー関数として、または および として使用できるメンバー関数として定義されていN.real()ますN.imag()

2 行目は次のいずれかになります。

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

type aliascmplxまたはテンプレートの特殊化自体を使用して、型を指定します。エラーが示すように、型が必要な場所ではテンプレートを使用できません。

于 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 に答える