Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/03/2010, 11:08
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 11 meses
Puntos: 61
Respuesta: Duda con punteros

Si tu arreglo mantiene punteros a Investigadores, el metodo deberia recibir eso, punteros. Si no recibe punteros, entonces recibira una copia de los objetos que te pasan, tal como estas declarando el metodo, y al asignarle a tu arreglo mediante

lArrNuevo[s] = &i;

estas guardando la direccion de memoria de una copia, copia que morira al salir del metodo.
En este caso, lo que deberias hacer es pedir memoria para un investigador, copiar los datos de lo que te pasan, y olvidarte de la copia. Pero esto parece mas trabajo que simplemente guardar punteros a objetos que fueron creados en otro lugar.

Esta el problema de la propiedad. Quien es el dueño de la memoria que ahora guardas en esos punteros? Si es el usuario externo de la clase, el se tiene que preocupar de liberar esa memoria, y si es esta coleccion, ella tiene que liberar la memoria en el destructor.

Por otro lado, la memoria que antes fue pedida para el arreglo lArr, no la estas liberando y lo tienes que hacer antes de la asignacion

lArr = lArrNuevo;

o si no, habras perdido la direccion que permitira tal liberacion.