Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/08/2006, 18:09
Nivel7
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 9 meses
Puntos: 2
Otra opcion es usar los punteros a void(void*)

como se hacien en Java antes de los generics.(Se usaba la clase Object).

en C para se puede simular usando los punteros a void.

claro tienes que implementar una interfas comun para tus estructuras, esto lo puedes hacer usando punteros a funcion.


ejemplo:

#define REVISTA 100;
#define LIBRO 200;

typedef struct
{
int tipo;
void(*HacerPrimero)(void*);
void(*HacerDespues)(void*);
}Libro;

typedef struct
{
int tipo;
void(*HacerPrimero)(void*);
void(*HAcerDespues)(void*);
}Revista;

esto te permitiria hacer cosas como;

void* objetos[2];

objetos[0] = malloc(sizeof(Libro));
objetos[1] = malloc(sizeof(Revista));

/*Hacer las asignaciones de funciones a los punteros.
y otra operacion ha hacer con un libro y una revista respectivamente.*/

/*y ya despues podemos hacer.*/
((Libro*)objetos[0])->HacerPrimero(objetos[0]);
((Revista*)objetos[1])->HacerPrimerp(objetos[1]);

en fin, que de esta forma podemos simular polimorfismo.
con un poco de dificultad.

Saludos.