質問: c++クラス内のprivate 変数をコンストラクタの引数によって動的に確保したいと考え, 次のようなプログラムを作ってみました. main関数でdata[100]のデータにより, clusterクラ
回答: ■おかしいところ cluster::cluster(double *DataSet_arg, int DataNum_arg) { ᅠᅠDataSet = new double[DataNum]; ←★ここがおかしいです。 ᅠᅠint i; ᅠᅠfor (i = 0; i < DataNum; i++) { ᅠᅠᅠᅠDataSet[i] = DataSet_arg[i]; ᅠᅠ} ᅠᅠDataNum = DataNum_arg; } 引数 DataNum_arg によって初期化される前の this->DataNum が使用されています。未初期化変数の参照なので結果は不定です。 ■修正方法 DataNum = DataNum_arg; の行をコンストラクタの1行目に移動しましょう。 または、コンストラクタなので以下のように初期化することも出来ます。 cluster::cluster(double *DataSet_arg, int DataNum_arg) : DataNum(DataNum_arg) { ~~