Respuesta: [C++] Como retornar arreglo bidimencional? Cita:
Iniciado por amchacon No, precisamente la característica de las variables estáticas es que sus valores persisten después de finalizar la función.
No se pueden retonar variables bidimensional (ni unidimensional). Lo que tienes que hacer es copiar esos valores a otra variable bidimensional. Te lo explico con un ejemplo:
Código:
void Maps::cargarMapa (int Matriz[][]) {
int mapa [FILAS_MAPA][COLUMNAS_MAPA] = {
0,0,12,12,12,12,12,12,12,12,0,0,
0,0,24,24,24,24,24,24,24,24,0,0,
0,0,12,12,12,12,12,12,12,12,0,0,
0,0,24,24,24,24,24,24,24,24,0,0,
0,25,25,25,25,25,25,25,25,25,25,0,
0,36,48,48,48,48,48,48,48,48,36,0,
0,0,36,48,48,48,48,48,48,36,0,0,
0,0,0,36,48,48,48,48,36,0,0,0,
0,0,0,0,36,48,48,36,0,0,0,0,
0,0,0,0,0,37,37,0,0,0,0,0
};
int i;
int j;
for (i = 0; i < FILAS_MAPA; i++) { // Largo
for (j = 0; j < COLUMNAS_MAPA; j++) { // Ancho
Matriz = mapa[j][i];
}
}
}
Esto si funcionaría, al llamar la función se rellenaria:
Código:
int Matriz[FILAS_MAPA][COLUMNAS_MAPA];
cargarMapa(Matriz);
// Matriz ya esta rellena
Muy bueno tu ejemplo, una duda nunca pase por parametro una matriz para que sea rellenada. Lo hago como decis y me sale el siguiente error:
Código:
Error 5 error C2087: 'Matriz' : falta el subíndice
Hago esto:
Código:
int Matriz [FILAS_MAPA][COLUMNAS_MAPA];
maps.cargarMapa(Pantalla,tiles,0,0,Matriz);
y en la funcion hago como me dijiste:
- Parametros:
Código:
void Maps::cargarMapa (SDL_Surface *Pantalla, SDL_Surface *Tiles, int x, int y,int Matriz[][])
-Rellenar: Capas son preguntas medias tontas pero no acostumbro a estas cosas D:
-----------------------------------------
Lo solucione, me habia olvidado de poner en Matriz los subíndices jaja, gracias por sus respuestas!.
Saludoss
Última edición por martin0290; 13/04/2013 a las 14:17 |