Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
965 connectés 

  FORUM HardWare.fr
  Programmation

  [C] Implémentation fonctions génériques

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Implémentation fonctions génériques

n°71451
Pschitt
Posté le 11-11-2001 à 19:44:16  profilanswer
 

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 )
 
            {...
            }

mood
Publicité
Posté le 11-11-2001 à 19:44:16  profilanswer
 

n°71452
youdontcar​e
Posté le 11-11-2001 à 19:51:55  profilanswer
 

comme quicksort, tu lui passes un pointeur sur fonction (la fonction en question faisant la comparaison entre deux objets).

n°71617
Pschitt
Posté le 12-11-2001 à 17:40:59  profilanswer
 

Mon pb n'est la fonction de comparaison mais plutôt comment automatiser le cast des nouveaux objets pointés par le tableau.

n°71619
tgrx
My heart is pumping for love
Posté le 12-11-2001 à 17:52:23  profilanswer
 

La solution c'est le C++ avec les templates.
 
En C tu ne peux pas le faire proprement :sweat:

n°71681
Pschitt
Posté le 12-11-2001 à 21:09:34  profilanswer
 

Et de façon dégueulasse, on fait comment ?
Il n'y vraiment aucune astuce :-(
Même en abusant du préprocesseur

n°71690
rufo
Pas me confondre avec Lycos!
Posté le 12-11-2001 à 21:56:20  profilanswer
 

un pointeur de type void?

n°71961
Pschitt
Posté le 13-11-2001 à 20:59:35  profilanswer
 

En castant dans la fonction de comparaison alors ?

n°72303
rufo
Pas me confondre avec Lycos!
Posté le 14-11-2001 à 21:36:23  profilanswer
 

Pschitt a écrit a écrit :

En castant dans la fonction de comparaison alors ?  




 
oui


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C] Implémentation fonctions génériques

 

Sujets relatifs
[Access/SQLServer] Fonctions equivalentes a DATEDIFF() et GETDATE() ?[C] fonctions de stdio.h
implémentation de grands entiers en SMLListe des fonctions javascript
Fonctions exec(), system(), passthru() ? Help !!implémentation du BBCode dans un forum
[C++]Fonctions virtuellesRecherche de Doc sur les fonctions RegOpenkey
[MySQL] SELECT CONCAT et fonctions arithmétiquesfonctions API windows et VBA
Plus de sujets relatifs à : [C] Implémentation fonctions génériques


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR