[C con Clase] Definir una variable int*, int** , ... , int **...* en runtime

Docma docma7 en terra.es
Dom Ago 24 22:37:54 CEST 2008


Hola Carles,

Creo que aquí esta Tu solucion.

C++ permite la Declaración ( Creación ) de Variables en tiempo de 
ejecución. Estas variables son llamadas "Variables Referenciadas 
Anonimas" es decir abreviando, "Variables Anonimas".

Con las variables anonimas puedes solucionar tu problema ya que puedes 
declarar la variable que necesites en tiempo de ejecución y definirle el 
tipo y el tamaño que necesites para el Array ( Arreglo ).


Estoy aTu disposición para cualquier duda que tengas.


Un Saludo


Docma





David fire escribió:
> hola
> me quede pensando, un *int es un puntero a un int
> **int es un puntero a un puntero de int
> un *** es un puntero a un puntero de int
> entonces ***int es lo mismo que **int
> de cualquier manera
> por que una usas una lista?
> hace una clase dimensión que tenga apuntadores a las dimensiones 
> siguientes
>
> vos tenes una dimension que va a ser la cabecera cuando quieras ir a 
> la posición (x;y;z;q;j;i) le pasas a la cabecera un arreglo con estos 
> datos y la cantidad de datos (las dimenciones) entonces la cabecera 
> que hace, a su "hija" x le pasa (y;z;q;j;i) y n-1
> y esa a su vez le pasa a su hija y (z;q;j;i) hasta que llegas  a donde 
> queres ir, la ultima te devuelve un puntero al dato o el dato.
>
> en realidad no hace falta que llames al siguiente por que bastaria que 
> hagas
> this.posicion[x]->posicion[y]->posicion[z]->posicion[q]....->posicion[i]
> posicion es un arreglo de **int  menos el ultimo que es un puntero a 
> int o un arreglo de ints directamente.
> como sabes que es? bueno cuando generas las dimenciones la ultima 
> apunta a ints y no a punteros de int.
>
> supongo que lo tenes que hacer como ejercicio para la facultad o algo 
> asi por que si no corres el riesgo de quedarte sin memoria.
>
> saludos
> David
>
>
>   
>  
>
> El 24 de agosto de 2008 15:32, Fabian Arenas <lordjerhyn en gmail.com 
> <mailto:lordjerhyn en gmail.com>> escribió:
>
>     El 24 de agosto de 2008 7:49, carles <carsato1 en yahoo.es
>     <mailto:carsato1 en yahoo.es>> escribió:
>
>         Hola
>
>          Quisiera crear una matriz de n dimensiones dinámica. Para ello he
>         pensado en crear un puntero unsigned int**...* de n dimensiones y
>         reservar espacio con el operador new, para ello haría falta
>         una funcion
>         de reserva para cada dimension, pero eso es otra historia.
>          El problema con el que me he encontrado es que no puedo
>         reservar una
>         variable int*...* en tiempo de ejecución
>
>          Lo que intento hacer es crear una clase que tenga la variable
>         int*...*, para ello hago
>
>                int * matriz;
>
>                y una vez sabida la dimensión pretendo cambiar el tipo
>         de la variable
>         "matriz" a int *...*, ahí es donde tengo el problema, ya que
>         eso no lo
>         permite el compilador por ninguno de los métodos de cásting que he
>         encontrado en manuales.
>
>          ¿Alguien puede sugerirme alguna solución? ¿Hay otro, o algún,
>         método
>         para hacer lo que yo quiero?
>
>         Gracias por vuestro tiempo ;)
>
>         Un saludo.
>
>
>
>     mmmm la verdad es que lo estuve pensando .... y lo unico que se me
>     ocurrio es que crearas una clase .... la cual tubiera no se po:
>     private:
>          int *matriz;
>          int **matriz;
>                     ....
>                    ....
>          int
>     ***********************************************************************matriz;
>
>     y que luego le dijeras al user que ingrese la dimension para
>     trabajar .... o la puedes definir segun los datos ... y a raiz de
>     esta .... trabaje con switch para el tipo de matriz ...
>
>     eso se me ocurrio ... medio chanta ... pero funciona ....
>
>     sl2
>
>
>
>
>         _______________________________________________
>         Lista de correo Cconclase Cconclase en listas.conclase.net
>         <mailto:Cconclase en listas.conclase.net>
>         http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>         Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>         <http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>
>
>
>
>     -- 
>     Fabian Arenas L.
>     Estudiante de Ingeniería en Informática. UTEM
>     Web: http://eterniosilicio.blogspot.com/
>     Linux Registered User #476277 - http://counter.li.org/
>     Si nada te resulta.......Rutea el algoritmo po GIL!!!
>
>
>     _______________________________________________
>     Lista de correo Cconclase Cconclase en listas.conclase.net
>     <mailto:Cconclase en listas.conclase.net>
>     http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>     Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>     <http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>
>
>
>
> -- 
> (\__/)
> (='.'=)This is Bunny. Copy and paste bunny into your
> (")_(")signature to help him gain world domination.
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ




Más información sobre la lista de distribución Cconclase