Hola
Para lo que quieres hacer debes sobrecargar el operador =
base operator = (const base &b);
base base::operator = (const base &b)
{
rellena = b.rellena;
strcpy(nombre, b.nombre);
strcpy(tlf, b.tlf);
}
De esta forma en la función bubble te quedaría
void bubble(int n1,int n2,base b[]){
for(int i=n1;i<n2;i++)
b[i]=b[i+1];
}
Saludos
y a que se debe que me de buen resultado?