Dites que j'ai une fonction f(a, b, c)
. Est-il possible de créer des pointeurs de fonction g
et h
de sorte que lorsque vous utilisez g
et h
, ils utilisent une valeur prédéterminée pour l'un des arguments?Pointeurs de fonction C++ et arguments de préréglage
Par exemple (*g)(b, c)
serait équivalent à f(1, b, c)
et (*h)(b, c)
équivaudrait à appeler f(2, b, c)
.
La raison pour laquelle je fais cela est que j'appelle une fonction à laquelle je peux obtenir un pointeur (via dlsym) et cette fonction a un comportement radicalement différent selon le premier argument (si bien qu'ils ne devraient pas ne sois pas vraiment appelé la même chose). De plus la variable pointeur de fonction qui est utilisée dans le programme principal ne peut généralement prendre que deux arguments car c'est un cas spécial où la fonction importée a trois (mais seulement deux sont nécessaires, l'un est essentiellement un paramètre).
Merci.
Ce que vous voulez est appelé currying. Regardez cette question: http://stackoverflow.com/questions/152005/how-can-currying-be-done-in-c – camh
@camh: Notez que cette question a été posée il y a un certain temps. Maintenant, les réponses pointant vers 'std :: bind' (de' boost :: bind' seraient écrasantes. ':)' – sbi