Autor |
Mensaje |
ezequiel.grillo
Nivel 4
Registrado: 11 Abr 2011
Mensajes: 74
Carrera: Informática y Sistemas
|
|
Les comento mi problema,
Estoy tratando de compilar el primer tp de la cat calvo pero cuando quiero pasar una matriz en la firma de un procedimiento me tira error y ya probe de mil maneras pero me sigue tirando el mismo error.
Lista de errores
Cita:
|
In file included from main.cpp:3:
cabeceras.h:6: error: declaration of `calles' as array of references
main.cpp: In function `int main()':
main.cpp:14: error: variable or field `cargaCalles' declared void
main.cpp:14: error: initializer expression list treated as compound expression
main.cpp:14: warning: left-hand operand of comma has no effect
main.cpp:14: warning: unused variable 'cargaCalles'
Process terminated with status 1 (0 minutes, 2 seconds)
3 errors, 2 warnings
|
Les dejo el codigo donde estoy laburando:
cabeceras.cpp
Cita:
|
void cargaCalles (int& calles[][MAX_DIM], int dimension){
for (int i=1;i<=dimension;i++)
for (int j=1;j<=dimension;j++){
cout << "Ingrese calle o tierra 1/0:" << endl;
cout << "[" << i+1 << "," << j+1 << "]" <<endl>> calles[i][j];
}
|
cabeceras.h
Cita:
|
void cargaCalles(int& calles[][MAX_DIM], int dimension);
|
main.cpp
Cita:
|
int main(){
int dimension=0;
int calles[MAX_DIM][MAX_DIM];
dimension=pedirDatos(dimension);
void cargaCalles(calles,dimension);
getchar();
return 0;
|
Pegue mucho codigo porque nose bien donde esta el error y tampoco lo que me qiere decir con array of referencies
Espero sus respuestas
Abrazoo.
|
|
|
|
|
|
|
|
|
koreano
Nivel 9
Registrado: 15 Jul 2010
Mensajes: 1796
Carrera: No especificada
|
|
Basicamente, int& es una referencia a integer, y int& asd[] es una referencia a un array, pero lo que vos estás haciendo es un array de referencias a array de integer que no es válido (por temas de memoria dinámica vs estática).
Lo que podés hacer para circunventar el problema sin usar ninguna estructura dinámica es pasar un puntero a la matriz esa y después usar la constante MAX_DIM en los ciclos anidados directamente.
|
|
|
|
|
|
|
|
|
Amadeo
Nivel 9
Registrado: 20 Oct 2008
Mensajes: 1436
Carrera: No especificada
|
|
Primero, en el main, es cargaCalles(calles,dimension), no void cargaCalles(calles,dimension)
Después, el encabezado de la función cargaCalles, si vos le queres pasar la matriz como parámetro, deberías hacer algo asi:
void cargaCalles (int calles[][], int dimension)
ó
void cargaCalles (int** calles, int dimension)
Cuando vos declaras un arreglo o una matriz, la variable (en este caso calles) es un puntero (o un doble puntero en este caso) a la estructura en cuestión, y por lo tanto eso es lo que tiene que recibir la función.
|
|
|
|
|
|
|
|
|
ezequiel.grillo
Nivel 4
Registrado: 11 Abr 2011
Mensajes: 74
Carrera: Informática y Sistemas
|
|
Pero al pasar la matriz sin &, me la devuelve cargada?? O sea el & lo puse para simular un pasaje por referencia (en pascal var).
Cita:
|
Primero, en el main, es cargaCalles(calles,dimension), no void cargaCalles(calles,dimension)
|
me olvide de borrarlo cuando hice el copy-paste jaja
|
|
|
|
|
|
|
|
|
Amadeo
Nivel 9
Registrado: 20 Oct 2008
Mensajes: 1436
Carrera: No especificada
|
|
Si, porque la variable "calles" ya es un puntero a la matriz, entonces cuando le pasas esa variable a la función, ya le estas pasando la dirección de memoria donde comienza esa matriz.
|
|
|
|
|
|
|
|
|
ezequiel.grillo
Nivel 4
Registrado: 11 Abr 2011
Mensajes: 74
Carrera: Informática y Sistemas
|
|
ahh buenisimo......ya lo corregi y funciono perfecto
gracias
|
|
|
|
|
|
|
|
|
|
|
Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro No podés responder a temas en este foro No podés editar tus mensajes en este foro No podés borrar tus mensajes en este foro No podés votar en encuestas en este foro No Podéspostear archivos en este foro No Podés bajar archivos de este foro
|
Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker365 Attacks blocked.
|
|
[ Tiempo: 0.2949s ][ Pedidos: 20 (0.2321s) ] |