Forum
|
HardWare.fr
|
News
|
Articles
|
PC
|
S'identifier
|
S'inscrire
|
Shop
Recherche
5709 connectés
FORUM HardWare.fr
Programmation
[C] Implémentation fonctions génériques
Recherche :
Dernière réponse
Sujet : [C] Implémentation fonctions génériques
rufo
Pschitt a écrit a écrit
:
En castant dans la fonction de comparaison alors ?
oui
Votre réponse
Nom d'utilisateur
Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Mot de passe
Vous avez perdu votre mot de passe ? Cliquez ici !
Le ton de votre message
Votre réponse
Smilies
Liste des smilies perso
Wiki smilies
Chercher un smiley
Options
Activer votre signature
Désactiver les smilies
Activer la notification par email du sujet
Aperçu
Vous avez perdu votre mot de passe ?
Vue Rapide de la discussion
rufo
Pschitt a écrit a écrit
:
En castant dans la fonction de comparaison alors ?
oui
Pschitt
En castant dans la fonction de comparaison alors ?
rufo
un pointeur de type void?
Pschitt
Et de façon dégueulasse, on fait comment ?
Il n'y vraiment aucune astuce :-(
Même en abusant du préprocesseur
tgrx
La solution c'est le C++ avec les templates.
En C tu ne peux pas le faire proprement :sweat:
Pschitt
Mon pb n'est la fonction de comparaison mais plutôt comment automatiser le cast des nouveaux objets pointés par le tableau.
youdontcare
comme quicksort, tu lui passes un pointeur sur fonction (la fonction en question faisant la comparaison entre deux objets).
Pschitt
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 )
{...
}
Forum MesDiscussions.Net
, Version 2010.2
(c) 2000-2011 Doctissimo
Copyright © 1997-2025 Groupe
LDLC
(
Signaler un contenu illicite / Données personnelles
)