関数内の配列に新しいオブジェクトを展開して追加し、その配列を関数の外でも有効にしようとしています(配列ポインターはパラメーターとして送信されます)。
void addMedia(Media* medias[], int &nrOfMedias, string title, int publYear, string author, int nrOfPages)
{
Media** tempArray = new Media*[nrOfMedias +1];
for(int i = 0; i < nrOfMedias; i++)
{
tempArray[i] = medias[i];
}
delete [] medias;
medias = tempArray;
delete [] tempArray;
medias[nrOfMedias] = new Book(title, publYear, author, nrOfPages);
nrOfMedias++;
}
このコードは関数内ではうまく機能しますが、関数の外に出ても配列はまだ空です。私がこれを理解しているように、関数内でポインターが変更されているためですが、ポインターを変更せずに配列を拡張するにはどうすればよいですか?
(戻り値のデータ型やパラメータ、代入要件は変更できません。)