Pointeur de fonction, comment passer une fonction en paramètre d'une autre fonction
Le programme sur lequel je travail est constitué d'un grand nombre de fonction (dans mon exemple je les nomme : fonction1, fonction2, etc..., elle renvoi un AnsiString) et à chaque fois que j'utilise l'une d'entre elle je dois calculer leurs paramètres et faire d'autre opération.
Si j'écris ces opérations à l'appel chaque fonction, ça va me faire un code super long et répétitif.
Comme ces opérations et calcul sont les mêmes pour chaque fonctions, j'ai envi de les mettre dans une fonction qui les ferait et appellerai la fonction qu'on lui à passé en paramètre (fonction1 ou fonction2 ou ...).
J'ai cherché du coté des pointeurs de fonction et j'ai trouvé pas mal de chose, mais je n'ai rien réussit à faire marché. Je n'ai pas tout compris non plus, je suis débutant en pointeur.:aie:
Voici, de façon simplifié, ce que je souhaite faire :
Code:
1 2 3 4 5 6 7 8 9
| "fonctionN" = &fonction1; //pointeur sur la fonction qui sera passer en paramètre
RemplirCase( a, b, "fonctionN");
//----------------------------------
void RemplirCase(int a,int b, "fonctionN")
{
offset=a+b;
AnsiString data = fonctionN(offset,1);
} |
j'ai essayé ceci pour créer le pointeur :
.h
Code:
AnsiString __fastcall Fonction1(int offset);
.cpp
Code:
1 2
| AnsiString ( *pFonction1)(int) = NULL;
pFonction1 = &Fonction1; |
Mais j'ai une erreur à la dernière ligne : E2034 Impossible de convertir 'AnsiString (_fastcall * (_closure )(int))(int)' en 'AnsiString (*)(int)
Quelqu'un pourrait-il m'aider?
Merci.