Cita:
Iniciado por CalgaryCorpus No puedes invocar metodos de objetos que no existen.
Si defines i asi:
Investigador *i;
aun no tienes a ningun investigador. Solo tienes una variable que podria apuntar alguna vez a algun investigador.
Al hacer
i->set()
vas al investigador, apuntado por i, y llamas el metodo set() de el. Pero i no apuntaba a ninguno, al menos no le has dicho al programa que apunte a alguno.
Muchas gracias, que burrada hice, lo peor es que ni siquiera me he dado cuenta.
Bueno, gracias a tu ayuda, ahora ya no rompe al momento de agregar valores a las variables del objeto, creo que esto último me tendría que haber dado una pista de dónde estaba el problema.
Código:
void altaInvestigador(ListaInvestigadores l)
{
Investigador *i = new Investigador();
i->set();
l.insertar(i);
}
Pero ahora me falla al asignar el puntero lArr = lArrNuevo ? Se trata de una copia binaria y no debería dar error?¿
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
delete[] lArr;
lArr = lArrNuevo;
}
}
Dejo todo el código cambiado por si a alaguien más le es útil, ya que está todo explciado en este post.
Muchas gracias CalgaryCorpus, creo que esto lo dejo por hoy y sigo mañana.