IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Notes à moi même

Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !]

Note : 2 votes pour une moyenne de 1,50.
par , 28/05/2016 à 18h04 (3620 Affichages)
Les fonctions de callback permettent la création de système modulaire, ils permettent de passer une fonction de rappel ("callback" en anglais) à une autre fonction qui pourra se servir de cette dernière. Pour cela on doit définir un modèle que devra suivre cette fonction (type de retour, nombre et types des arguments). pour plus de détails voire la page Wikipédia.

Création du modèle de la fonction

Pour créer le modèle de la fonction on opère de la manière suivante :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
// Modèle de la fonction de callback
typedef void (*processEvent) (sf::Event);

dans l'ordre :
  • void : type de retour de la fonction
  • (*processEvent) : nom du modèle, il nous servira plus tard à demander une fonction suivant ce modèle
  • (sf::Event) : type de l'argument demandé


Demandé une fonction de callback

Pour demander une fonction de callback en paramètre d'une fonction, on opère de la façon suivante :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
// Prototype de la fonction
void dispatchEvents(processEvent pe);

Ici on demande en paramètre une fonction qui suit le modèle que l'on à crée à l'étape précédente, maintenant si on souhaite créer une fonction qui suit ce modèle :

Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
// Prototype de la fonction de callback
void processEvents(sf::Event event);

Ensuite il nous suffit de passer cette fonction en paramètre (référence) et de s'en servir comme normalement sans oublier les paramètres qu'elle demande, ce qui pourrai donner par exemple :

Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
// appel
dispatchEvents(&processEvents);
 
// Corps de la fonction dispatchEvents
void dispatchEvents(processEvent pe){
 
    sf::Event event;
    while(window.pollEvent(event)){
 
        if(event.type == sf::Event::Closed)
            isCloseRequest = true;
 
        pe(event);
 
    }
 
}

Tout cela fonctionne également avec les méthodes de classes.

Envoyer le billet « Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !] » dans le blog Viadeo Envoyer le billet « Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !] » dans le blog Twitter Envoyer le billet « Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !] » dans le blog Google Envoyer le billet « Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !] » dans le blog Facebook Envoyer le billet « Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !] » dans le blog Digg Envoyer le billet « Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !] » dans le blog Delicious Envoyer le billet « Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !] » dans le blog MySpace Envoyer le billet « Fonctions Callbacks en C++ [Dépréciées, mais toujours fonctionnelles !] » dans le blog Yahoo

Mis à jour 24/01/2019 à 12h03 par smarlytomtom

Catégories
Programmation , C , C++ , C / C++

Commentaires