Je viens de passer à STL il y a quelques semaines pour refaire un vieux
projet en objet/STL/C++...
J'en arrive un moment où je dois effectuer des callbacks et j'ai
quelques questions, est-il obligé (conseillé ?) d'utiliser Boost pour
ses fonctions bind pour avoir la possibilité de faire des appels de
fonctions membres ou alors une autre solution existe-t-elle ?
un p'tit exemple de ce que je voudrais faire (de manière portable et
sans trop grosse magouilles dur à maintenir)
Class Boutton {
callback call;
void Event() {
// appeler le callback s'il est positionné
}
};
class interface {
std::list<Bouton*> lst;
//...
}
class interface_spe: public interface {
public:
void MaFonctionCallback() {
}
void Create() {
// ajout d'un bouton avec son callback
Bouton *b=new Bouton;
b.setCallBack( MaFonctionCallBack );
lst.push_back( b );
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
darkman_spam
Murlock wrote in message <40e91075$0$25713$:
J'en arrive un moment où je dois effectuer des callbacks et j'ai quelques questions, est-il obligé (conseillé ?) d'utiliser Boost pour ses fonctions bind pour avoir la possibilité de faire des appels de fonctions membres ou alors une autre solution existe-t-elle ?
Boost ne fait que fournir une solution utilisable, tout comme tu pourais toi-même l'implémenter. Tu n'es donc pas obligé d'utiliser Boost.
Mais il existe nombre de bibliothèques fournissant des outils encapsulant tout cela, et nombre d'articles sur le sujet. À commencer par Boost et Loki, la bibliothèque implémentée dans « Modern C++ Design » d'Andreï Alexandrescu.
Cfr. <URL:www.moderncppdesign.com/> et <URL:www.cuj.com/>, entre autres.
--drkm
Murlock wrote in message <40e91075$0$25713$636a15ce@news.free.fr>:
J'en arrive un moment où je dois effectuer des callbacks et j'ai
quelques questions, est-il obligé (conseillé ?) d'utiliser Boost pour
ses fonctions bind pour avoir la possibilité de faire des appels de
fonctions membres ou alors une autre solution existe-t-elle ?
Boost ne fait que fournir une solution utilisable, tout comme tu
pourais toi-même l'implémenter. Tu n'es donc pas obligé d'utiliser
Boost.
Mais il existe nombre de bibliothèques fournissant des outils
encapsulant tout cela, et nombre d'articles sur le sujet. À commencer
par Boost et Loki, la bibliothèque implémentée dans « Modern C++
Design » d'Andreï Alexandrescu.
Cfr. <URL:www.moderncppdesign.com/> et <URL:www.cuj.com/>, entre
autres.
J'en arrive un moment où je dois effectuer des callbacks et j'ai quelques questions, est-il obligé (conseillé ?) d'utiliser Boost pour ses fonctions bind pour avoir la possibilité de faire des appels de fonctions membres ou alors une autre solution existe-t-elle ?
Boost ne fait que fournir une solution utilisable, tout comme tu pourais toi-même l'implémenter. Tu n'es donc pas obligé d'utiliser Boost.
Mais il existe nombre de bibliothèques fournissant des outils encapsulant tout cela, et nombre d'articles sur le sujet. À commencer par Boost et Loki, la bibliothèque implémentée dans « Modern C++ Design » d'Andreï Alexandrescu.
Cfr. <URL:www.moderncppdesign.com/> et <URL:www.cuj.com/>, entre autres.
--drkm
Murlock
drkm wrote:
Murlock wrote in message <40e91075$0$25713$:
J'en arrive un moment où je dois effectuer des callbacks et j'ai quelques questions, est-il obligé (conseillé ?) d'utiliser Boost pour ses fonctions bind pour avoir la possibilité de faire des appels de fonctions membres ou alors une autre solution existe-t-elle ?
Boost ne fait que fournir une solution utilisable, tout comme tu pourais toi-même l'implémenter. Tu n'es donc pas obligé d'utiliser Boost.
Sans doute peux-tu t'inspirer de ceci : <snip>
Effectivement, ça mérite un examen approfondi
Mais il existe nombre de bibliothèques fournissant des outils encapsulant tout cela, et nombre d'articles sur le sujet. À commencer par Boost et Loki, la bibliothèque implémentée dans « Modern C++ Design » d'Andreï Alexandrescu.
Cfr. <URL:www.moderncppdesign.com/> et <URL:www.cuj.com/>, entre autres.
--drkm
Merci pour toutes ces références, je vais potasser cette documentation à tête reposé...
Cordialement, Murlock
drkm wrote:
Murlock wrote in message <40e91075$0$25713$636a15ce@news.free.fr>:
J'en arrive un moment où je dois effectuer des callbacks et j'ai
quelques questions, est-il obligé (conseillé ?) d'utiliser Boost pour
ses fonctions bind pour avoir la possibilité de faire des appels de
fonctions membres ou alors une autre solution existe-t-elle ?
Boost ne fait que fournir une solution utilisable, tout comme tu
pourais toi-même l'implémenter. Tu n'es donc pas obligé d'utiliser
Boost.
Sans doute peux-tu t'inspirer de ceci :
<snip>
Effectivement, ça mérite un examen approfondi
Mais il existe nombre de bibliothèques fournissant des outils
encapsulant tout cela, et nombre d'articles sur le sujet. À commencer
par Boost et Loki, la bibliothèque implémentée dans « Modern C++
Design » d'Andreï Alexandrescu.
Cfr. <URL:www.moderncppdesign.com/> et <URL:www.cuj.com/>, entre
autres.
--drkm
Merci pour toutes ces références, je vais potasser cette documentation à
tête reposé...
J'en arrive un moment où je dois effectuer des callbacks et j'ai quelques questions, est-il obligé (conseillé ?) d'utiliser Boost pour ses fonctions bind pour avoir la possibilité de faire des appels de fonctions membres ou alors une autre solution existe-t-elle ?
Boost ne fait que fournir une solution utilisable, tout comme tu pourais toi-même l'implémenter. Tu n'es donc pas obligé d'utiliser Boost.
Sans doute peux-tu t'inspirer de ceci : <snip>
Effectivement, ça mérite un examen approfondi
Mais il existe nombre de bibliothèques fournissant des outils encapsulant tout cela, et nombre d'articles sur le sujet. À commencer par Boost et Loki, la bibliothèque implémentée dans « Modern C++ Design » d'Andreï Alexandrescu.
Cfr. <URL:www.moderncppdesign.com/> et <URL:www.cuj.com/>, entre autres.
--drkm
Merci pour toutes ces références, je vais potasser cette documentation à tête reposé...
Cordialement, Murlock
Murlock
Pour information, j'ai implémenté la solution trouvé sur http://www.function-pointer.org/.
Pour information, j'ai implémenté la solution trouvé sur
http://www.function-pointer.org/.
Peut-être qu'il y a des inconvénients ? ou des effets de bords mais ça semble me convenir
Il me semble qu'il s'agit d'une implémentation basique très correcte. Par rapport à l'exemple simplissime que je t'ai donné, il ajoute une base abstraite, et un paramètre de modèle pour la classe dont on prend un pointeur vers une fonction membre.
Si je me souviens bien, Alexandrescu, dans Loki, fournit également des paramètres de modèles pour le type de retour et des arguments (il doit utiliser une TypeList pour les arguments, je pense). Toujours d'après mes souvenirs, ses foncteurs son aussi plus généraux, dans le sens où ils peuvent encapsuler un appel de pointeur vers fonction, ou un appel de pointeur vers fonction membre, ou un appel de foncteur ... Bref, tout ce qui est appelable.
--drkm
Murlock wrote in message <40ec5c8d$0$18107$626a14ce@news.free.fr>:
drkm wrote:
Murlock wrote in message <40ebc1e2$0$29377$626a14ce@news.free.fr>:
Pour information, j'ai implémenté la solution trouvé sur
http://www.function-pointer.org/.
Peut-être qu'il y a des inconvénients ? ou des effets de bords mais ça
semble me convenir
Il me semble qu'il s'agit d'une implémentation basique très
correcte. Par rapport à l'exemple simplissime que je t'ai donné, il
ajoute une base abstraite, et un paramètre de modèle pour la classe
dont on prend un pointeur vers une fonction membre.
Si je me souviens bien, Alexandrescu, dans Loki, fournit également
des paramètres de modèles pour le type de retour et des arguments (il
doit utiliser une TypeList pour les arguments, je pense). Toujours
d'après mes souvenirs, ses foncteurs son aussi plus généraux, dans le
sens où ils peuvent encapsuler un appel de pointeur vers fonction, ou
un appel de pointeur vers fonction membre, ou un appel de foncteur ...
Bref, tout ce qui est appelable.
Peut-être qu'il y a des inconvénients ? ou des effets de bords mais ça semble me convenir
Il me semble qu'il s'agit d'une implémentation basique très correcte. Par rapport à l'exemple simplissime que je t'ai donné, il ajoute une base abstraite, et un paramètre de modèle pour la classe dont on prend un pointeur vers une fonction membre.
Si je me souviens bien, Alexandrescu, dans Loki, fournit également des paramètres de modèles pour le type de retour et des arguments (il doit utiliser une TypeList pour les arguments, je pense). Toujours d'après mes souvenirs, ses foncteurs son aussi plus généraux, dans le sens où ils peuvent encapsuler un appel de pointeur vers fonction, ou un appel de pointeur vers fonction membre, ou un appel de foncteur ... Bref, tout ce qui est appelable.