dポイントプレゼントキャンペーン実施中!

C++Builderで複素数やそれを使った演算を扱っていますが、以下のような使い方が出来ても
#include <complex.h>


int B=10;
complex<double> *A = new complex<double>[B];

次のような動的な配列の宣言が出来ません。
#include <complex.h>
int B=10;
int C=500;


complex<double> *A = new complex<double>[B][C];

E2034’complex<double>(*)[500]'型は’'complex<double>*'型に変換できない

とのエラーが出ます。

正しい、複素数行列の宣言の仕方を教えてください。

A 回答 (1件)

上記のエラーは、複素数とは関係ありません。

intでも出ます。
int* A = new int[10][500];
としてみて下さい。同じエラーがでますよね。

ということで以下はcomplex<double>をintに置き換えて説明します。必要に応じてintをcomplex<double>に置き換えて下さい。

C++はこのような多次元配列を扱うのは苦手です。
boostライブラリのmulti_arrayクラスを使えば解決はできますが・・・ハードルが高そうですね。

とりあえずは、
int* A = new int[10 * 500]; のように1次元配列にしてみてはいかがでしょうか。
アクセスするときは、
int x = 5;
int y = 100;
printf("%d", A[y * 10 + x]);

というような感じでできるでしょう。

参考URL:http://www.kmonos.net/alang/boost/classes/multi_ …
    • good
    • 0
この回答へのお礼

多次元配列のデバックが不便なだけで、コンパイラに要求していることは同じなのですが・・・
有難う御座います。

お礼日時:2004/09/25 00:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!