Dev - C++ - Duda de punteros (Listas y colas)

 
Vista:

Duda de punteros (Listas y colas)

Publicado por Programador fustrado (2 intervenciones) el 01/11/2019 16:13:34
Buenos días!

Tengo una lista donde meto un objeto, y este objeto tiene un atributo que es una cola donde inserto otro tipo de objeto. El problema es que no puedo acceder a los datos de la cola. Pongo el código:

///Main

Creo el objeto y lo inserto en la lista.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Box box1(1);
listaBox.insertarBox(box1);
 
\\Método que inserta en la clase Lista:
void Lista::insertarBox(Box b)
{
    lnodo nuevo;
    nuevo = new NodoLista(b);
    if(ultimo)
        ultimo->siguiente = nuevo;
    ultimo = nuevo;
    if(!primero)
        primero = nuevo;
}

Ahora en ese objeto (box) introduzco un objeto(pasajero):
box1.insertar(pasajero);

Y lo inserto en la cola del objeto box:
1
2
3
4
5
6
void Box::insertar(Pasajero p)
{
    cout << "Inserto el pasajero en el box " << getId() << "\n";
    cola.insertarConPrioridad(p);
    pasajerosCola = pasajerosCola + 1;
}

Hasta aqui todo bien. Cuando quiero mostrar los datos del box en el main, si intento acceder desde la lista no me sale nada, pero si lo hago desde el objeto box si:

Estos son los métodos para mostrar la cola del objeto box:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
listaBox.mostrarLista();
box1.mostrarBox();
 
\\void Lista::mostrarLista()
{
    lnodo aux = primero;
    cout << "Box: ";
    while(aux) {
        aux->box.mostrarBox();
        aux = aux->siguiente;
    }
    cout << endl;
}
 
void Box::mostrarBox()
{
    cout << "Id del Box en la lista: " << id << " y pasajeros insertados " << pasajerosCola << "\n";
    cola.mostrar();
}
 
void Cola::mostrar()
{
    pnodo aux = primero;
    cout << "Cola: ";
    while(aux) {
        aux-> pasajero.mostrar();
        aux = aux->siguiente;
    }
    cout << endl;
}

En mostrarLista he debuggeado revisado que los punteros a la cola del objeto box no tienen referencia.

Este es el resultado del print:

Box: Id del Box en la lista: 1 y pasajeros insertados 0
Cola:

Id del Box en la lista: 1 y pasajeros insertados 9
Cola: ID Pasajero -> 2 Prioridad -> 7 Hora llegada -> 5 Box -> 0 Entrada box -> 0 Duracion atencion -> 39 Tiempo total de espera ->0
ID Pasajero -> 8 Prioridad -> 7 Hora llegada -> 14 Box -> 0 Entrada box -> 0 Duracion atencion -> 31 Tiempo total de espera ->0
ID Pasajero -> 7 Prioridad -> 6 Hora llegada -> 9 Box -> 0 Entrada box -> 0 Duracion atencion -> 16 Tiempo total de espera ->0
ID Pasajero -> 1 Prioridad -> 6 Hora llegada -> 0 Box -> 0 Entrada box -> 0 Duracion atencion -> 20 Tiempo total de espera ->0
ID Pasajero -> 4 Prioridad -> 5 Hora llegada -> 7 Box -> 0 Entrada box -> 0 Duracion atencion -> 27 Tiempo total de espera ->0
ID Pasajero -> 9 Prioridad -> 4 Hora llegada -> 11 Box -> 0 Entrada box -> 0 Duracion atencion -> 23 Tiempo total de espera ->0
ID Pasajero -> 5 Prioridad -> 3 Hora llegada -> 21 Box -> 0 Entrada box -> 0 Duracion atencion -> 20 Tiempo total de espera ->0
ID Pasajero -> 6 Prioridad -> 2 Hora llegada -> 18 Box -> 0 Entrada box -> 0 Duracion atencion -> 14 Tiempo total de espera ->0
ID Pasajero -> 3 Prioridad -> 1 Hora llegada -> 0 Box -> 0 Entrada box -> 0 Duracion atencion -> 15 Tiempo total de espera ->0

Creo que en aux->box.mostrarBox(); pierdo la referencia del nodo a la cola, pero no sé que se me escapa.

¿Alguna idea?

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder