next up previous
Next: Champ statique Up: Plus de détails sur Previous: Utilisation des références constantes

Pointeur vers une fonction

Une fonction peut être passée en argument, comme une variable normale. Pour ce faire on manipule un pointeur vers la fonction. Un pointeur p vers la fonction suivante:

double f(int a, bool b);

est du type:

double (*p)(int, bool);

Ainsi, les lignes suivantes:

double (*p)(int, bool);
p = &f;
double x = (*p)(1, false);

déclarent un pointeur vers une fonction du même type que f, le font pointer sur f, puis appellent la fonction pointée.

Pour passer une fonction d'un certain type comme argument, on procèdera donc ainsi:

bool test_si_resultat_positif(double (*p)(int, bool), int x){
  double z = (*p)(x, true);
  return (z>0);
}

et l'appel se fera simplement:

bool b = test_si_resultat_positif(&f, 3);



Guillaume Charpiat 2006-12-07