Bonjour à tous,
Je travaille en ce moment sur un programme (C bien sûr) qui est amené à géré deux types de structure de données assez différentes, mais qui applique les mêmes opérations sur ces structures.
Je sais qu'en C, il n'existe pas de polymorphisme vu que la notion d'objet n'existe pas, et donc pour appliquer une opération sur deux structs différents, je devrais écrire deux méthodes différentes, chacune s'appliquant à un type de struct.
Cependant ... je me demandais s'il existe un moyen de faire un pseudo-polymorphisme pas trop moche. J'aimerais pouvoir écrire une seule fois une fonction qui s'applique donc aux deux types de structs, comme ceci :
- J'appelle ma fonction qui prend en paramètre un pointeur type void (parce-que type inconnu) sur mon struct
- La fonction "reconnait" le type du struct parmi les deux types possibles
- En fonction du type "reconnu", elle applique tel ou tel opération
Je ne sais pas si je suis super clair dans mes explications. Le but est de savoir s'il existe un moyen d'écrire une opération s'appliquant sur deux types de struct différents sans jamais avoir a stocker dans le programme "le struct X situé à cet adresse est de type Y".
Ce lien parait correspondre à ce que je cherche :
http://sky13.blogspot.de/2007/06/pse...isme-en-c.html
Cependant, il est écris qu'il ne faut pas abuser de ce type d'astuce. Quelqu'un m'a aussi dit qu'il existait une astuce à base de macro, sans pouvoir m'en dire plus ...
Qu'en pensez-vous ? Avez vous des pistes ?
Merci encore de votre aide !
Partager