Hola a todos.
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:
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;
};
Bueno, ahora mismo estoy programando el método insertar, me parece que es por lo que hay que empezar.
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:
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;
}
}
Gracias a todos lo que os paseis por aquí y dediqueis 5 min a leer este tostón.
Saludos, Eduardo