Hola de nuevo a tod@s
En cgeneral.cpp tengo este método:
void cGeneral::inicializar_lista_personajes()
{
int i;
cPersonaje *nuevo_personaje;
cFrame nuevo_frame;
BITMAP *aux_bitmap;
nuevo_personaje = new cPersonaje;
nuevo_personaje->modificar_nombre("OVNI");
aux_bitmap = load_bitmap("ovni.pcx", NULL);
nuevo_frame.modificar_frame(aux_bitmap);
nuevo_personaje->modificar_frame(nuevo_frame, 0);
this->lista_personajes.insertar_ultimo(nuevo_personaje);
this->lista_personajes.actual_inicializar();
}
Al hacer la llamada en la línea 14, salta a
void cListaPersonajes::insertar_ultimo(cPersonaje *ins_ultimo)
{
cNodoListaPersonajes *aux_nodo;
aux_nodo = new cNodoListaPersonajes;
aux_nodo->modificar_personaje(*ins_ultimo);
aux_nodo->modificar_anterior(this->final_lista);
this->final_lista = aux_nodo;
if (this->numero_personajes == 0)
this->inicio_lista = aux_nodo;
else
aux_nodo->obtener_anterior()->modificar_siguiente(aux_nodo);
this->numero_personajes++;
}
Pues bien, aquí, al hacer la llamada en línea 6
aux_nodo->modificar_personaje(*ins_ultimo);, salta directamente a la línea 6 del método
void cListaPersonajes::insertar_primero(cPersonaje *ins_primero)
{
cNodoListaPersonajes *aux_nodo;
aux_nodo = new cNodoListaPersonajes;
aux_nodo->modificar_personaje(*ins_primero);
aux_nodo->modificar_siguiente(this->inicio_lista);
this->inicio_lista = aux_nodo;
if (this->numero_personajes == 0)
this->final_lista = aux_nodo;
else
aux_nodo->obtener_siguiente()->modificar_anterior(aux_nodo);
this->numero_personajes++;
}
Lo peor de todo es que ya tuve problemas con los métodos de la lista dinámica, los depuré y finalmente funcionaban. Es algún problema de punteros, pero no sé dónde puede estar. Aquí les dejo el adjunto con el código (necesita la Allegro, si saco tiempo intentaré poner una versión con el mismo error y que no lo necesite).
[attachment=0:2cijv3ry]cirtema.7z[/attachment:2cijv3ry]
Necesita un par de imágenes llamadas "fondo.pcx" y "ovni.pcx" en la misma carpeta. Poned cualesquiera PCXs.
Me estoy volviendo loco
Gracias de antemano.