Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/04/2013, 13:49
martin0290
 
Fecha de Ingreso: octubre-2009
Mensajes: 84
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: [C++] Como retornar arreglo bidimencional?

Cita:
Iniciado por amchacon Ver Mensaje
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:
Código:
Matriz = mapa[j][i];
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