Hola, primero decirque que la solución de pasar a getCuadricula un puntero dónde debe almacenar la información me parece mucho más elegante. Sobre resolverlo de la otra forma, un par de cosas:<br>1.- Debes darte cuenta que cuando defines un array local a un método, la memoria se toma de la pila (en general) y no puedes devolver un puntero a esa zona.<br>
2.- Si quieres hacer la copia dentro de la propia clase, lo que puedes tener es otro elemento en la clase int **mapa_auxiliar, y devolver ese. Sobre ese habrás hecho un new, será memoria dinámica y no habría problemas.<br>
<br>Saludos,<br>   Carlos<br><br><div class="gmail_quote">El día 16 de junio de 2008 20:58, Alejandro <<a href="mailto:alepelexo@yahoo.es">alepelexo@yahoo.es</a>> escribió:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
¡Hola listeros! Mi caso es el siguiente. Tengo una clase como la que muestro a continuación:<br>
<br>
class Cuadricula<br>
{<br>
      private:<br>
              int w, h;//Dimensiones de la cuaricula (a lo ancho y a lo alto)<br>
              int **mapa;//Mapa de la cuadrícula<br>
      public:<br>
             Cuadricula(int alto, int ancho);<br>
             int **GetCuadricula();<br>
<br>
             ...<br>
<br>
             ~Cuadricula();<br>
};<br>
<br>
En el constructor, lo que hago es convertir "**mapa" en un array bidimensional de dimensiones "alto" y "ancho", mediante memoria dinámica, de la siguiente forma:<br>
<br>
    int k, n;//Contadores<br>
<br>
    mapa = new int*[h];<br>
    for(k = 0; k < h; k++)<br>
    {<br>
        mapa[k] = new int[w];<br>
    }<br>
<br>
Hasta ahí todo bien. Mi problema está en la función "GetCuadricula()". Como no quiero que se devuelva la dirección de memoria del mapa de la clase (para proteger los datos privados), los copio en un array bidimensional auxiliar:<br>

<br>
    int k, n;<br>
    int copy_mapa[h][w];<br>
<br>
    for(k = 0; k < h; k++)<br>
    {<br>
        for(n = 0; n < w; n++)<br>
        {<br>
            copy_mapa[k][n] = mapa[k][n]<br>
        }<br>
    }<br>
<br>
Ahora la pregunta es: ¿cómo hago para que la función "GetCuadricula()" devuelva ese array? La idea es que luego me pueda referir a él desde "main()" de la siguiente manera:<br>
<br>
    Cuadricula mapa(10, 20);<br>
    int **mapa_colisiones;<br>
    int k, n;<br>
<br>
    ...<br>
<br>
    mapa_colisiones = mapa.GetCuadricula();<br>
<br>
    for(k = 0; k < 10; k++)<br>
    {<br>
        for(n = 0; n < 10; n++)<br>
        {<br>
            if(mapa_colisiones[k][n] != 0)<br>
            {<br>
                ...<br>
            }<br>
        }<br>
    }<br>
<br>
    ...<br>
<br>
Se me ocurrió pasar como parámetro a la función "GetCuadricula()" un array en el que se copiaría el mapa del objeto, pero ahora que se me planteó este problema me gustaría saber también la solución. Espero que me podáis ayudar.<br>

<br>
Un saludo, Alejandro.<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br>