Salve a tutti,
ho bisogno di una funzione che mi permetta di allargare il mio array dinamico e di aggiungere un ulteriore elemento. La mia idea era quella di traferire il contenuto dell'array vecchio in uno temporaneo, allocare l'array con le nuove dimensioni e ricopiare gli elementi. Sfortunatamente quando vado a dichiarare nuovamente l'array puntato da s, il compilatore mi restituisce un errore dicendo che il nuovo valore copre il vecchio... il che è impossibile se l'array vecchio è stato opportunamente deallocato. Come posso risolvere? Di seguito c'è il codice. Grazie anticipatamente per l'aiuto.
codice:
//la funzione prende in ingresso un puntatore ad array allocato dinamicamente,
// una variabile x che indica le dimensioni dell'array e una variabile obj.
void myFunction (myType* s, int &x, myType obj) {
//allocazione di un array temporaneo per copia degli elementi di s;
myType* a = new myType[x];
//copia degli elementi di s;
for (int i = 0; i < x; i++) {
*(a+i) = *(s+i);
}
//deallocazione dell'array puntato da s ed il puntatore non punta più ad alcun array.
delete []s; s = NULL;
//nuova allocazione di s: il compilatore mi dice che questa istruzione copre
//la variabile dichiarata all'interno degli argomenti della funzione.
//('declaration of 'myType* s' shadows a parameter.')
myType* s = new myType[x+1];
for (int i = 0; i < x; i++) {
*(s+i) = *(a+i);
}
*(s+x+1) = obj;
dim++;
}