0
現在のオブジェクトのコピーを作成し、それを後で私がアクセスできる配列の中に格納したいと考えています。オブジェクトのコピーを作成する
私はarr
配列内のintを追加していたクラス
class Purpose{
public:
Purpose(){
max = 5;
elements = 0;
obj_elements = 0;
arr = new int[max];
}
Purpose(const Purpose &a){
max = a.max;
elements = a.elements;
obj_elements = a.obj_elements;
arr = new int[elements]
for(int i = 0; i < elements; i++){
arr[i] = a.arr[i]
}
}
Add(){
Purpose *tmp = new Purpose(*this);
arr_two[ obj_elements++ ] = tmp;
}
private:
int max;
int elements;
int obj_elements;
int *arr;
Purpose *arr_two[2];
}
を持っています。 Add()メソッドは、現在のオブジェクトのコピーを作成し、arr_two
配列内に格納しますが、コピーしたオブジェクトの要素を印刷する場合は、seg faultがスローされます。
void Purpose::Print_It(){
cout << arr_two[ obj_elements - 1 ] -> max << endl;
cout << arr_two[ obj_elements - 1 ] -> elements << endl;
cout << arr_two[ obj_elements - 1 ] -> obj_elements << endl;
for(int i = 0; i < arr_two[ obj_elements - 1 ] -> elements ; i++){
cout << arr_two[ obj_elements - 1 ] -> arr[i] << endl
}
}
arrの要素を印刷すると、エラーが発生します。他の属性は問題なく印刷されます。
アレイの値を印刷しているときに、プログラムがクラッシュ/セグフォールトを起こす原因は何ですか?配列の値をAdd()
メソッドの中に出力すると動作します。
このコードのすべての側面は、まったくひどく不注意です。これらの理由がありますか、なぜ 'std :: vector'を使用してそれを行うことができないのですか? –
私はベクトルを使わずに練習したいと思います。 – Darlyn
練習中の場合は、自分のデバッグを行う練習を含める必要があります。 :) – nobar