トピックを混乱させて申し訳ありませんが、これは元の質問でした:
実際に異なる派生クラスを指している、基本クラスへのポインターの配列を再割り当てする方法は?
可能であれば、ここで動的キャスト、typeid、または RTTI を使用しないでください。
編集配列要素を保存して、新しい配列のポインターを古い要素に設定するだけでよいことに気付きました..しかし、operator =またはCctorを実行するにはどうすればよいですか?
または:
実際に要素をコピーして、この配列を「悪い方法」で再割り当てする方法は?
例:
class Base {...}
class Derived1 : public Base {...}
class Derived2 : public Base {...}
int main()
{
int arrayLength=0, arrayMaxLength=3;
Base **array=new Base*[arrayMaxlength];
array[0]=new Derived1();
array[1]=new Derived2();
//Reallocation starts...
Base **tmp=new Base*[arrayMaxLength*=2];
for(int i=0;i<arrayLength;i++)
tmp[i]=new Base(*array[i]); //<------ What to put here instead of Base?
//The unimportant rest of Reallocation..
for(int i=0;i<arrayLength;i++)
delete array[i];
delete [] array;
array=tmp;
}