cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 2009
-
29 août 2005 à 10:15
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 2009
-
29 août 2005 à 12:04
Hep Hello les gens :)
J'ai une question qui me tarrode l'esprit voyez vous
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 29 août 2005 à 10:41
moi je peux de donner un exemple d'utilisation de pointeur sur fonction :
pour implementer mes routines d'arbres; l'appelant doit passer en paremetre un pointeur sur une fonction de comparaison (comme cela le code est générique).
Voici comment on declare la fonction, et comment on l'appelle avec des paramtres :
// definition du type pointeur sur fonction de comparaison
typedef int (*CMP_FUNC)(void *key1,void *key2,void *param);
// exemple de fonction de comparaison d'entier
int cmpInt(void *key1,void *key2,void *param)
{
int a,b;
UNUSED_PARAMETER(param);
a = (int)key1;
b = (int)key2;
if(a > b) return CMP_MORE;
else if(a < b) return CMP_LESS;
else return CMP_EQUAL;
} // cmpInt()
// defintion d'un arbre AVEC la fonction de comparaison
typedef struct tagTREE
{
int nElem; // nombre d'elements
CMP_FUNC cmpFunc; // fonction de comparaison
void *param; // parametre pour la fonction de comparaison
P_NODE_TREE root; // racine de l'arbre
}TREE,*P_TREE,**PP_TREE;
// exemple d'appel de la fonction pour la recherche d'un element
r = tree->cmpFunc(key,cur->key,tree->param);
// ce sont les routines d'arbres qui passe les parametres a la fonction
// la puissance des pointeur sur fonction, c'est qu'avec elle on peut faire enormemant de chose, juste en changeant la fonction passée, cela est tres utile pour le code générique.
Pourquoi faire simple quand on peut faire compliqué ?
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 29 août 2005 à 10:55
salut,
DialogBox prend en parametre un pointeur vers la fonction callback, apres elle appelle cette fonction comme elle veut.
C'est DialogBox qui choisit les parametres avec lesquels elle va
appeler la fonction callback, qui choisit notamment quand elle va
appeler cette fonction (elle va le faire plusieurs fois d'ailleurs...),
et pas celui qui appelle la fonction DialogBox.
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 29 août 2005 à 10:17
J'viens de lire et ça veut rien dire lol
Donc je reprend
J'ai compris que ça devait certainement être dû au pointeur de
fonction, mais j'comprend pas comment on fait pour ne pas spécifier les
paramètres de la fonction WndProc :^)
if(!Meilleur("Joky")) return ERREUR;<
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 29 août 2005 à 12:04
La reponse est simple : la fonction est un parametre, on ne la connait pas dans la routine, si tu te poses cette question, poses toi celle la aussi (elle est plus generale) : A quoi servent les arguments ?
Pourquoi faire simple quand on peut faire compliqué ?