[C con Clase] Problema usando un array insertado en una lista, que apunta a otra lista...

Reignerok reignerok en gmail.com
Vie Jun 4 16:22:46 CEST 2010


Hola Toni!

Hoy precisamente estuvieron los dos profesores y yo intentando corregir un
error de un compañero que he visto en tu código:

typedef T_paquete T_turismo[MAX_RESERVAS-1];

Recuerda que el array[X] se define desde 0 hasta X-1. Así que si tú le pones
el -1, te está restando 2 veces. La línea debería ser:

typedef T_paquete T_turismo[MAX_RESERVAS];

No sé si tendrá algo que ver con tu fallo, pero desde luego te dará
problemas.

¡Un saludo!

El 4 de junio de 2010 12:15, Toni <tsptoni en gmail.com> escribió:

> gracias Steven,
>
> La parte que me corregiste ya funciona, pero sigo con problemas manejando
> ese array.
>
> Estoy intentando inicializar los punteros del array poniéndolos a nulo, he
> intentado hacer lo siguiente, pero, apesar de que en la compilación no da
> errores, al ejecutar el programa éste se cierra sin más, ni avisos de acceso
> a memoria no permitida, ni nada, simplemente se cierra.
>
>  for (int i=0;i<MAX_RESERVAS;i++){
>
>          aux->destinos[i]=NULL;
>       }
>
> ¿Es lo anterior correcto?
>
> Mi intención es poner ese array todo a nulo cada vez que vaya a insertar un
> nuevo cliente, y luego apuntaré esos punteros a otros datos, pero no siempre
> llenaré las 5 casillas, por eso quiero ponerlo todos a nulo primero, ya que
> sino me da error al listar ya que no puedo acceder a un puntero que no
> apunta a nada...
>
> Muchas gracias y un saludo,
> Antonio.
>
> El 3 de junio de 2010 15:06, Steven Davidson <srd4121 en njit.edu> escribió:
>
> Hola Toni,
>>
>> Toni wrote:
>>
>>> Buenos días,
>>>
>>>
>> [CORTE]
>>
>>
>>  El problema que tengo es intentar acceder al nodo que apunta cada puntero
>>> de array mencionado antes, he intentado hacerlo de varias maneras, y ahora
>>> mismo está del siguiente modo, y el compilador da error de: "cod_id no ha
>>> sido declarado".
>>>
>>>
>> [CORTE]
>>
>>
>>                       for (int i=0; i<MAX_RESERVAS; i++){
>>>                                                    if
>>> (aux->destinos[i]!=NULL){
>>>
>>>      cout<<" "<<aux->destinos[i].cod_id;
>>>
>>
>> Aquí está el error. El problema es que estás accediendo a 'cod_id' usando
>> el operador de acceso a miembro (.) cuando el primer operando es un puntero.
>> Recuerda que 'destinos' es un array de punteros a 'struct'. Esto significa
>> que 'aux->destinos[i]' es un puntero.
>>
>> El operador que deberías usar es el de acceso a miembro con un puntero
>> (->). Esto es,
>>
>>
>> cout << ' ' << aux->destinos[i]->cod_id;
>>
>>
>> Espero que esto te ayude.
>>
>> Steven
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100604/141ae7d1/attachment.html>


Más información sobre la lista de distribución Cconclase