Chapitre 1 : Pointeur vers une fonction

D'abord, je vais mettre au clair un point qui va vous titiller, on ne peut pas utiliser void* comme pointeur sur une fonction.

Et comment ça se faire, ça pointe sur n'importe quoi.

Il est vrai qu'un void* pointe sur n'importe quoi, ou du moins un type pas défini, mais il est prévu pour les données, donc pour stoker des informations toutes bêtes. Mais les fonctions ne sont pas stockées au même endroit dans la mémoire, donc on ne peut pas déclarer une variable-fonction avec un void*. En fait il n'y a pas de type générique pour définir une fonction, il faut toujours définir une fonction d'un certain type.

Bon, c'est bien beau tout ça mais comment on fait ? On sais comment on ne fait pas, c'est un début mais on ne va pas aller loin avec.

Voici plusieurs définitions de fonctions en C :

1
2
3
4
void (*uneFonction)(void)
void (*uneAutreFonction)(float)
void (*encoreUneAutreFonction)(float, double)
float (*uneFonctionLeRetour)(float, double,int)

Et l'équivalent en C++ :

1
2
3
4
void (&uneFonction)(void)
void (&uneAutreFonction)(float)
void (&encoreUneAutreFonction)(float, double)
float (&uneFonctionLeRetour)(float, double,int)

Normalement vous avez déjà vu ça dans les chapitres précédents, mais au moins on part sur de bonnes bases.