0

これは単純なコンパイル エラーです。次のように double 配列を割り当てています。

double mixmu[][1]  = {{1},{-1}};
double mixvar[][1] = {{1},{1}};
double coef[]      = {1,1};

これらを double** オブジェクトとして渡すことはできませんか?

error: no matching function for call to ‘MixtureModel::MixtureModel(int, int, double [2], double [2][1], double [2][1], Distribution*)’
./problems/MixtureModel.h:25: note: candidates are: MixtureModel::MixtureModel(int, int, double*, double**, double**, Distribution*)
4

1 に答える 1

2

それらを渡すために double 配列を動的に割り当てる必要がありますか?

いいえ、あなたはしません!
あなたの誤解/疑いは、配列はポインターであるという(間違った)事実に由来します

いいえ!配列はポインターではありません!!
配列名が無効なシナリオでは、配列名が最初の要素へのポインターに変わることがあります。

2 次元配列は double ポインターに減衰しません。配列へのポインターに減衰します。

宣言は次のようにする必要があります。

MixtureModel::MixtureModel(int, int, double [2], double [2][1], double [2][1], Distribution*);

また

MixtureModel::MixtureModel(int, int, double *, double(*)[1], double (*)[1], Distribution*);

よく読んだ:
C++ で配列を使用するにはどうすればよいですか?

于 2012-05-31T05:35:18.657 に答える