Bonjour,
j'ai besoin de faire une fonction qui prends en argument une autre fonction qui doit avoir une interface donnee
un 1er moyen d'y arrive est d'utiliser une fonction template :
Code :
- template <class F>
- void DoSomeStuffs(F f)
- {
- f(x, y);
- }
|
l'appel de la fonction donne l'interface a respecter
par ex ici : void f(X x, Y &y), j'entend par la x=entree, y=sortie
ma question comment faire si l'utilisateur a besoin d'arguments additionnelle pour calculer y a partir de x :
ex : void f(X x, Y &y, Z z, ...etc)
il y a biensure les solutions :
- utiliser des variables globales
- utiliser les va_arg du C
- demander a l'utilisateur de derivee une classe depuis une classe de base qui a une methode virtuelle pure f(x,y)
- utiliser les boost.bind
quel est la methode "classique" ?