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

  FORUM HardWare.fr
  Programmation
  C

  Polymorphisme paramétré sur des ABR

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Polymorphisme paramétré sur des ABR

n°1836304
Docteur_Cu​be
Posté le 10-01-2009 à 11:50:36  profilanswer
 

Salut tout le monde !  
 
Je viens d'implémenter des Arbres Binaires de Recherche (ABR) équilibrés (AVL) en C.  
 
Je veux faire deux arbres, l'un contenant des éléments de type TYPE1 ordonnés par func1, et l'autre contenant des éléments de type TYPE2 ordonnés par func2. Et j'aimerais faire cela en réutilisant un code unique définissant les avl quel que soit le type des éléments.  
 
Je ne sais pas trop comment m'y prendre pour pouvoir faire des arbres de différents types sans recopier tout le code...  
 
Pour le moment dans mon fichier avl.h j'ai un truc du genre :  

Code :
  1. typedef TYPE ElementType;


qui définit le type des noeuds de l'arbre. Et donc dans tout le code des avl je manipule des ElementType. Je peux très bien faire passer le pointeur de la fonction qui permet d'ordonner ces éléments. Ce que je ne sais pas faire, c'est définir plusieurs ElementType différents, en fonction des arbres que j'ai besoin de faire..  
J'ai un peu de mal à exprimer mon problème, mais en gros il s'agit de faire du polymorphisme paramétré sur des arbres.  
 
Pouvez-vous m'éclairer ?  
 
Merci beaucoup !


Message édité par Docteur_Cube le 10-01-2009 à 12:08:32
mood
Publicité
Posté le 10-01-2009 à 11:50:36  profilanswer
 

n°1836480
Trap D
Posté le 11-01-2009 à 09:47:33  profilanswer
 

Si tu assimiles ElementType à (void *), ça ne marche pas ?  
Après tu passes des fonctions qui recalent le (void *) sur le bon type ça devrait le faire, non ?

n°1836494
Joel F
Real men use unique_ptr
Posté le 11-01-2009 à 11:34:51  profilanswer
 

en général c'ets la seul solution disponbile en C : void* + un identifiant de type. C'est ce que fait MPI par exemple pr ses fonctions de transferts.
 
EN gros tu passes des void* et un identifiant de type : TYPE_INT, TYPE_FLOAT etc et tu switch sur cet identifiant avant d'appeler une fonction proprement typées.
 
En C++, tu ferais juste des templates.

n°1836499
Docteur_Cu​be
Posté le 11-01-2009 à 11:40:18  profilanswer
 

Je ne suis pas sûr d'avoir bien compris comment faire exactement, mais je vais essayer quand même. (Mais ça va me prendre du temps parce qu'entre temps j'ai opté pour la méthode crade en recopiant le code...).  
 
Concernant MPI, je suis sensé y venir juste après, car je fais ces arbres pour un algo de sweep-line, et je dois le paralléliser ensuite... Donc ça me rassure que quelqu'un connaisse ici ^^.  
 
Merci pour votre aide !

n°1836502
Un Program​meur
Posté le 11-01-2009 à 11:49:27  profilanswer
 

Joel F a écrit :

en général c'ets la seul solution disponbile en C : void* + un identifiant de type.


 
Il y a aussi l'utilisation des macros à la generic.h (voir les vieilles versions de g++ -- 1.X) qui permettent de faire semblant d'avoir des templates.  Attention, le résultat est à peu près impossible à débugger.

n°1836557
Joel F
Real men use unique_ptr
Posté le 11-01-2009 à 14:30:51  profilanswer
 

je dirais même que c'ets compéltement indébuggable [:aloy]
La généricité en C, c'ets pas la joie :/

n°1836575
Trap D
Posté le 11-01-2009 à 15:45:05  profilanswer
 

Joel F a écrit :

je dirais même que c'ets compéltement indébuggable [:aloy]
La généricité en C, c'ets pas la joie :/

Pourquoi ? Si tu n'utilises pas de macros, si tu n'utilises que des fonctions callback, ça n'a rien d'extraordinaire.


Message édité par Trap D le 11-01-2009 à 15:46:27
n°1836636
Joel F
Real men use unique_ptr
Posté le 11-01-2009 à 19:04:07  profilanswer
 

je veut dire que c'est quand meme pas fait pour


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

  Polymorphisme paramétré sur des ABR

 

Sujets relatifs
Rch un paramètre spécifiqueAvoir une fct unique pour plusieurs events avec paramètres différents
Flashvar confond un paramètre et sa valeur...[PERL] Passer un tableau en paramètre d'une fonction
Passage en parametre. (2pages)vector contenant object utilisant polymorphisme, help
[Résolu] Problème de paramètre dans un IFSTD type et polymorphisme.
suppression de dossiers avec fichier txt en paramètre[Oracle] Passer un paramètre à un curseur.
Plus de sujets relatifs à : Polymorphisme paramétré sur des ABR


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