私はポインタの配列がありますどのようにポインタの配列内のオブジェクトを挿入するために
Hotel *hotels[size];
for (int i = 0; i < size; ++i)
hotels[i] = new Hotel();
をそして私は私が知っている名前を持ついくつかのオブジェクトの後に、この配列内のオブジェクトを挿入する:
cin >> tmp_name;
for (int i = 0; i < size; i++) {
if (hotels[i]->get_name() == tmp_name) {
hotels[size] = new Hotel();
size += 1;
Hotel *tmp_hotel;
tmp_hotel = hotels[i+1];
hotels[i+1]->fillHotel();
for (i = i + 2; i < size; i++) {
hotels[i] = tmp_hotel;
tmp_hotel = hotels[i+1];
}
break;
}
}
私は間違っていますか?
UPD: 私のソリューション:
cin >> tmp_name;
for (int i = 0, j = 0; i < size; i++, j++) {
new_hotels[j] = hotels[i];
if (hotels[i]->get_name() == tmp_name) {
new_hotels[j+1]->fillHotel();
++j;
system("clear");
}
}
hotels[size] = new Hotel();
++size;
for (int i = 0; i < size; i++) {
hotels[i] = new_hotels[i];
}
あなたが持っている問題は何ですか?コードがクラッシュしますか(私はそう思っていますが、 'size'を増やしても配列にはもっと多くの記憶領域を割り当てるわけではありません)、正しい結果は得られませんか、コンパイルされませんか? – UnholySheep
これは、JavaからC++へのほぼリテラルな翻訳によく似ています。それは良くないね。裸のポインタと 'new'で問題に陥るのではなく' std :: vector'を使います。私はまた、あなたが実行時に配列の長さを指定することができ、あなたのオブジェクトを決して '削除 'しないという、非標準のGCC拡張を使っているという気持ちがあります。 –
また、 'i'がループ内で最大値に達すると' hotels [i + 1] 'は範囲外になります。 –