Ver Mensaje Individual
  #5 (permalink)  
Antiguo 31/03/2010, 12:28
eduardor2k
 
Fecha de Ingreso: enero-2007
Mensajes: 8
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Duda con punteros

Cita:
Iniciado por CalgaryCorpus Ver Mensaje
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.

Última edición por eduardor2k; 31/03/2010 a las 12:48