Implémentation fonctions génériques [C] - Programmation
Marsh Posté le 11-11-2001 à 19:51:55
comme quicksort, tu lui passes un pointeur sur fonction (la fonction en question faisant la comparaison entre deux objets).
Marsh Posté le 12-11-2001 à 17:40:59
Mon pb n'est la fonction de comparaison mais plutôt comment automatiser le cast des nouveaux objets pointés par le tableau.
Marsh Posté le 12-11-2001 à 17:52:23
La solution c'est le C++ avec les templates.
En C tu ne peux pas le faire proprement
Marsh Posté le 12-11-2001 à 21:09:34
Et de façon dégueulasse, on fait comment ?
Il n'y vraiment aucune astuce :-(
Même en abusant du préprocesseur
Marsh Posté le 14-11-2001 à 21:36:23
Pschitt a écrit a écrit : En castant dans la fonction de comparaison alors ? |
oui
Marsh Posté le 11-11-2001 à 19:44:16
J'ai une fonction de recherche dicho. que j'aimerais coder de façon générique.
Implantation\Structure :
- Objet :
typedef struct {
unsigned int TypeObjet; /* Entier définissant*/
char nom[30]; /* le type d'objet */
int idNmElem;
}OBJ_1;
- Liste dans un tableau trié :
typedef struct {
void * tabRechDicho[LGMAX];
int fin;
}LISTE_RECH;
Proto fonction de recherche :
INFO_RECH_D * RechDicho (
LISTE_RECH * lr,
void * Obj,
int typeObj,
int (* Comparer) (void *,void *) /* Fonction */
/* comparaison */
)
Comment éviter le switch case pour caster chaque nouveau type d'objet dans le corps de cette fonction :
if(compare( (type *)tabRechDicho[n].nom , Obj )
{...
}