Tengo que hacer una práctica para la universidad y no consigo entender bien el funcionamiento de los punteros, antes que nada quiero aclarar que no busco que andie me haga el ejercicio, sencillamente porque son muchas cosas y llevaría su tiempo, además a mi me gusta programar xD.
Bueno empecemos:
Tengo una preciosa clase llamada ListaInvestigadores, que como habeis acertado se trata de un vector de punteros que apunta a objetos del tipo Investigador, a que mola!
Código:
Bueno, ahora mismo estoy programando el método insertar, me parece que es por lo que hay que empezar.class ListaInvestigadores { public: ListaInvestigadores(); Investigador get(unsigned pos); void insertar(Investigador i); void eliminar(unsigned pos); void set(unsigned pos, Investigador i); int size(); string toString(); private: int s; Investigador *l; Investigador **lArr; };
lo que tendría que hacer, si no estoy equivocado es:
crear un array nuevo de punteros que se de tamaño s(numero de elementos) + 1, copiar los elementos del array antiguo y agregar la direccion del investigador que me pasan al final de todo, para terminar debo decirle a lArr que apunte al array nuevo para sustituirlo.
Tengo unas dudas.
1. La mas importante, lo que he hecho y programado es lo mismo.
2. Cuando finaliza el método no debería borrar las variables declaradas dentro de él, con esto me refiero a que el array nuevo debería desaparecer y por consiguiente, la dirección que apunta lArr al final, no debería apuntar a nada?
Ahora os dejo el código de lo que he implementado:
PD: Teneis libertad de criticarlo todo lo que querais.
Código:
Gracias a todos lo que os paseis por aquí y dediqueis 5 min a leer este tostón.void ListaInvestigadores::insertar(Investigador i) { Investigador **lArrNuevo; lArrNuevo = new Investigador * [s+1]; if(lArrNuevo == 0) cout << "Ha sucedido un problema al crear el puntero lArrNuevo"; else { for(int j=0; j < s; j++) lArrNuevo[j] = lArr[j]; lArrNuevo[s] = &i; cout << lArrNuevo[s]->toString(); s++; // Incrementamos en 1 el numero de Investigadores lArr = lArrNuevo; } }
Saludos, Eduardo