C'est en cela que c'est dynamique. Le C++ fait cela pour nous de manière transparente, en utilisant une table des méthodes virtuelles, qui n'est rien d'autre qu'une table de pointeur (la fameuse vtable manquante si on oublie de déclarer le destructeur comme étant virtuel par exemple ;)). En C, il faut faire cela à la main, en gérant des pointeurs de fonctions.
Je t'ai dis uniquement que c'était possible en C, pas que c'était aussi simple qu'en C++.
En gros il est possible de retrouver un C avec la plupart des éléments de la POO mais cela demande de gros efforts et c'est plus tordu à réaliser qu'en C++. Mais c'est possible.
Je suis d'accord donc sur le fait d'éviter de simuler la POO avec du C dans la mesure du possible car le C++ offre un confort intéressant de ce côté là.
Enfin, tu noteras que l'explication que tu donnes sur la manière d'avoir du polymorphisme en C est exactement la même que celle proposée par Taurre, avec comme inconvénient un certain gaspillage de la mémoire proportionnelle au nombre de méthodes virtuelles.
Il est peut être possible de régler ce problème, je n'ai pas trop réfléchi à cette question de consommation de ce côté.
Note aussi qu'on peut contourner la difficulté, par exemple ta fonction précédente pourrait être refaite pour prendre en paramètre l'aire en non une figure géométrique pour retomber sur tes pattes car l'appel de fonction sera facilement traité par l'éditeur de liens par exemple.
Je suis conscient que c'est tordu après. Mais certains le font (j'ai un peu regarder la Win API et GTK de ce côté).
[^] # Re: Sans pointeurs de fonction
Posté par Renault (site web personnel) . En réponse au journal C(++) ?. Évalué à 0.
Je t'ai dis uniquement que c'était possible en C, pas que c'était aussi simple qu'en C++.
En gros il est possible de retrouver un C avec la plupart des éléments de la POO mais cela demande de gros efforts et c'est plus tordu à réaliser qu'en C++. Mais c'est possible.
Je suis d'accord donc sur le fait d'éviter de simuler la POO avec du C dans la mesure du possible car le C++ offre un confort intéressant de ce côté là.
Il est peut être possible de régler ce problème, je n'ai pas trop réfléchi à cette question de consommation de ce côté.
Note aussi qu'on peut contourner la difficulté, par exemple ta fonction précédente pourrait être refaite pour prendre en paramètre l'aire en non une figure géométrique pour retomber sur tes pattes car l'appel de fonction sera facilement traité par l'éditeur de liens par exemple.
Je suis conscient que c'est tordu après. Mais certains le font (j'ai un peu regarder la Win API et GTK de ce côté).