我想展開並添加一個新的對象到一個函數內的數組,並讓該數組在函數外生效(數組指針作爲一個參數)。展開並添加一個新的對象到一個函數內的數組
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++;
}
這段代碼在函數裏面工作的很好,但是當我到外面的時候,數組仍然是空的。據我瞭解,這是因爲指針在函數內部發生了改變,但是如何在不改變指針的情況下擴展數組?
(我不能改變返回數據類型或參數,分配的要求。)
使用矢量,並將它們作爲參考傳遞。更簡單/更安全。 (順便說一下,在那裏第二次刪除看起來很腥) – Mat
*我不能改變返回數據類型或參數*然後它是**不可能**做你想做的。 – cnicutar
是的,我不得不刪除我說的使用向量的答案,因爲我看到了這個要求。 – boiler96