Foros del Web » Programación para mayores de 30 ;) » C/C++ »

no match for 'operator[]' in 'almacen[0]'

Estas en el tema de no match for 'operator[]' in 'almacen[0]' en el foro de C/C++ en Foros del Web. Wenas tengo un error en C que me trae loco... tengo esta función [I]int CrearAlmacenVacio(TInfoViaje almacen) { int i; for(i=0;i<ARRAY;i++) { almacen[i].ocupado=0; almacen .viaje.id=0; } ...
  #1 (permalink)  
Antiguo 23/01/2008, 04:25
 
Fecha de Ingreso: enero-2008
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
no match for 'operator[]' in 'almacen[0]'

Wenas tengo un error en C que me trae loco...

tengo esta función

[I]int CrearAlmacenVacio(TInfoViaje almacen)
{
int i;
for(i=0;i<ARRAY;i++)
{
almacen[i].ocupado=0;
almacen.viaje.id=0;

}
return 0;
}


La cual como veis me tendría que poner esos campos del array a 0 pero me dice que no match for 'operator[]' in 'almacen[0]'

mi codigo es así:

Código:
#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 

#define ARRAY 30 

typedef struct {
   int ocupado;
   char nombre[20];
   char apellidos[40];
   char dni[10];
} Tcliente;

typedef struct {
   int id;
   char destino[20];
   char fsalida[8];
   char fllegada[8];
   int plazas;
   int precio;
   Tcliente cliente[50];
} Tviaje;

typedef struct {
   int ocupado;
   Tviaje viaje;
}TInfoViaje;

typedef TInfoViaje TAlmacen[ARRAY];

int CrearAlmacenVacio(TInfoViaje almacen);

void menu (int *op)
	{
    printf("\n\n\n---------------------------------\n");
    printf("\VIAJES\n\n");
    printf("\n\t1.- Dar de alta un viaje");
    printf("\n\t2.- Dar de baja un viaje");
    printf("\n\t3.- Dar de alta un cliente");
    printf("\n\t4.- Dar de baja un cliente");
    printf("\n\t5.- Listar todos los viajes");
    printf("\n\t6.- Listar clientes de un viaje");	
    printf("\n\n\t0.- Salir de la aplicacion");
    printf("\n\n\tElija una opcion (0-6): ");
fscanf(stdin,"%d",op);
fflush(stdin);
while((*op<0)||(*op>6))
	{
	printf("\nHa habido un error en la selección");
	fscanf(stdin,"%d",op);
	fflush(stdin);
	}
}

int main(void)
{
   Tcliente clientes;
   TInfoViaje almacen;
   int respuesta, i,op;

   CrearAlmacenVacio(almacen);
      
   do
	{menu(&op);

      switch(op)
		{
      case 1:
         break;
      case 2:
         break;
      case 3:
         break;
      case 4:
         break;
      case 5
         break;
      case 6
         break;
      case 7
         break;
      }
   }

while (op!=0);/*CUANDO SE INTRODUCE 0 SE SALE DEL PROGRAMA*/
   printf("\n\n\n\n\n\n\n\n\t\t\t\tFIN DEL PROGRAMA\n\n\n\n\n\n\n\n");

   return 0;
}


int CrearAlmacenVacio(TInfoViaje almacen)
	{
		int i;
		for(i=0;i<ARRAY;i++)
		{
			almacen[i].ocupado=0;
			almacen[i].viaje.id=0;
			
      }
      return 0;
	}
Anguna idea?

Mil gracias de antemano
  #2 (permalink)  
Antiguo 23/01/2008, 07:09
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 18 años, 7 meses
Puntos: 28
Re: no match for 'operator[]' in 'almacen[0]'

El error está aquí:
Código:
...
int main(void)
{
   Tcliente clientes;
   TInfoViaje almacen;
   int respuesta, i,op;

   CrearAlmacenVacio(almacen);
...
Imagino que debría ser:
Código:
...
int main(void)
{
   Tcliente clientes;
   TAlmacen almacen;
   int respuesta, i,op;

   CrearAlmacenVacio(almacen);
...
Porque TInfoViaje no es un arreglo, el arreglo es TAlmacen y cada uno de sus elementos es un TInfoViaje.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:06.