2010-09-08 13 views
3

Comme le titre peut l'indiquer, j'ai des problèmes pour voir comment Boost Bind, Boost Function, Boost Signals et les pointeurs de fonction C++ jouent tous ensemble. D'après ma compréhension, Boost Bind et Boost fonctionnent conjointement comme Signals alors que Signals est une abstraction au-dessus de Bind et Function.Comment sont liés les Boost Bind, les Boost Function, les Boost Signals et les pointeurs de fonction C++?

De même, par rapport aux pointeurs de fonction C++ standard, pourquoi Boost Function/Bind est-il préférable?

J'espère que vous pouvez m'aider à dissiper une partie de ma confusion ici. Fondamentalement, j'essaie de trouver la meilleure/plus simple solution de rappel en utilisant C++. :)

+0

Je ne suis pas familier avec l'approche boost sur les pointeurs de fonction, mais je suis très impressionné par l'approche de Loki! –

Répondre

1

Voir here une discussion sur les différents concepts de c-fonction-pointeurs, fonction de suralimentation et signal de suralimentation.

Imho la principale différence entre les deux objets de fonction boost et les pointeurs de fonction c est la possibilité d'ajouter des paramètres par défaut. Cela facilite l'utilisation des méthodes (fonctions avec un premier paramètre invisible -> le pointeur this) en tant qu'objets de fonction. Il est également possible d'adapter des fonctions qui nécessitent des paramètres à utiliser comme objets de fonction avec des arguments différents. Signal/Slot est une chose différente: il vous permet de publier un signal auquel les clients peuvent s'abonner. Le signal peut être vu comme une liste de pointeurs de fonction. Les clients peuvent ajouter leurs pointeurs de fonction à la liste. Lorsque le signal est appelé, tous les pointeurs de fonction de la liste sont informés/appelés.