[C con Clase] Tipo Void

Pablo Alejandro Herrero pablusplus en gmail.com
Sab Oct 1 16:55:38 CEST 2011


Hola. Tenés varias opciones pero lo mas rápido que se me ocurre es que
indiques el tipo de dato con otro parámetro:


#define   ENTERO    0
#define   FLOTANTE 1
#define   CADENA    2

bubble(void *array, tipo_retorno *puntero_a_funcion(tipo_args), int tipo){
    ...
    switch(tipo)
         case ENTERO:
              ...(int *)array[índice_a_elemento]...
         break;
         case FLOTANTE:
               ...(float *)array[índice_a_elemento]...
         break;
         case CADENA:
               ...(char *)array[índice_a_elemento]...
         break;
         default:
         break;
}


seria algo asi: indicar el tipo de dato, y usar una selección explícita de
tipo (explicit cast). Cuidado con: hay que indicar los argumentos de la
funció en puntero_a_función (yo usaria el operador ... para definirla,
aunque después tenés que tomar los parámetros desde la pila) y lo otro es
que indice_a_elementos no debe exceder el tamaño del array porque sino tenés
una excepción por violacion de acceso a memoria. Espero te sirva!


El 1 de octubre de 2011 06:02, metuskale <metuskale en gmail.com> escribió:

> Buenas, estoy intentando realizar unas funciones lo mas genéricas
> posibles con el fin de crear una pequeña librería y re aprovecharla en
> varias practicas.
> Lo primero que quiero hacer, y que servirá de ejemplo es un bubbleSort
> que reciba un array de tipo void y un puntero a una funcion de
> comparacion en funcion del tipo que se quiera ordenar.
> El problema que tengo y no se como resolver es como usar y convertir
> el tipo void o void* del array al tipo correcto, es decir:
>
> void bubble (void* datos, "puntero a funcion") {
>
>
>
> }
>
> Saludos y gracias a todos
>
> --
> David de Alvarado Lacruz
>
> _______________________________________________
> 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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20111001/5286a068/attachment.html>


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