STL ライブラリ (ベクトルなど) を使用せずにサイズを変更したい、動的に割り当てられたポリモーフィック オブジェクトの配列があります。次のように、オリジナルを一時配列に移動してから、オリジナルを削除してから、オリジナルを一時配列に等しく設定しようとしました。
int x = 100;
int y = 150;
Animal **orig = new Animal*[x];
Animal **temp = new Animal*[y];
//allocate orig array
for(int n = 0; n < x; n++)
{
orig[n] = new Cat();
}
//save to temp
for(int n = 0; n < x; n++)
{
temp[n] = orig[n];
}
//delete orig array
for(int n = 0; n < x; n++)
{
delete orig[n];
}
delete[] orig;
//store temp into orig
orig = temp;
ただし、たとえば要素にアクセスしようとすると:
cout << orig[0]->getName();
メモリ割り当てエラーが発生します。
Unhandled exception at at 0x768F4B32 in file.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0033E598.