Ver Mensaje Individual
  #8 (permalink)  
Antiguo 10/09/2006, 20:26
Nivel7
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 10 meses
Puntos: 2
Bueno, en relidad esto podria ser mas complejo de lo que espere, no entiendo muy bien el proposito de tu progrmama:

que dato queieres que sea generico?

las estructuras, o los campos de tus estructuras??

si tansolo quieres que los campos de tus estructuras sean genericos, puedes usar lo que te hesugerido,

yq en lugar de usar
int, char*, etc.
para declara los campos de tu estructura usa la estructura Tipo, que te he mencionado en mensajes previos.

struct Auto
{
Tipo *codigo;
Tipo *marca;
//etc.
};

de esta forma solo los campos serian genericos.

si quieres que sean tus estructuras las que sean genericas, la opcion es que
la estructura Tipo, comtemple esto, es decir ademas de poder manipular datos primitivos de C, tambien manipule los tipos definidos por tus estructuras.

en C++ esto seria mas facil ya que hay sobrecarga de operadores, en C, no.


otra solucion es usar polimorfismo al estilo C, jeje.

las estructuras que as creados podrian estar contenidas en una sola, o podia haber una estructura base comun a todas, en su composicion.

esta estructura usara punteros a funciones, las cuales apuntaran a funciones en particular para cada tipo o dato manejado por tu estructura.

ejemplo: (muy basico).

union Variant {char* pcdat, int idat};

struct Base
{
Variant var;
void (*Crear)(Base*, Variant);
};


void CreaInt(Base* This, Variant value)
{
This->var.idat = value;
}

void CreaStr(Base* This, Variant value)
{
strcpy(This->var.pcdat, value);
}

Base VarInt;
Base VarStr;

VarInt.Crear = CreaInt;
VarStr.Crear = CreaStr;


VarInt->Crear(&VarInt, 1000);
VarStr->Crear(&VarStr, "Cadena");

este seria el funcionamiento y uso basico, pero realmente no se si pueda ayudarte este diseño.

Tal puedeas encontra solucion en el preprocesador, pero no soy bueno en eso. jaja

Saludos.