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++;
}