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.

Voici, de façon simplifié, ce que je souhaite faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
AnsiString __fastcall Fonction1(int offset);
.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.