したがって、作成したこの構造体で静的配列を動的に拡張する必要があります (ベクトルを使用できますが、静的配列を使用して要素をコピーするように特別に要求されるため、ベクトルを使用するように求められないでください)。
問題は、セグメンテーション違反が発生し、その理由がわかりません。オブジェクトの新しいインスタンスを作成すると、長さの配列が設定されます (現在、テストするのは 5 です)。次に、配列のサイズを変更するときにこのコードを実行しますが、機能しません。
if (used == (length-1)) {
length *= 2;
T* newArr = new T[length];
for (int i = 0; i < used; i++) {
newArr[i] = items[i];
cout << "Copied" << endl;
}
items = newArr;
}
そのため、新しい配列のアドレスにコピーするようで、適切な数のアイテムのみをコピーするようです。Used は追加されたアイテムの数を決定し、 length は配列全体のサイズを保持します。新しい配列を作成するときに、長さが使用される数の2倍になるようにします。アイテムを newArr に割り当てようとすると、セグメンテーション違反が発生するので、そのコードが正しいのか、それともそこでクラッシュしているのか疑問に思っています。私;行ごとにデバッグしようとしましたが、そこで壊れているかどうかはわかりません。