Depuis C ++ 11, vous pouvez utiliser la bibliothèque fonctionnelle pour le faire de manière succincte et générique. La syntaxe est, par exemple,
std::function<bool (int)>
où bool
est le type de retour ici d'une fonction à un argument dont le premier argument est de type int
.
J'ai inclus un exemple de programme ci-dessous:
// g++ test.cpp --std=c++11
#include <functional>
double Combiner(double a, double b, std::function<double (double,double)> func){
return func(a,b);
}
double Add(double a, double b){
return a+b;
}
double Mult(double a, double b){
return a*b;
}
int main(){
Combiner(12,13,Add);
Combiner(12,13,Mult);
}
Parfois, cependant, il est plus pratique d'utiliser une fonction de modèle:
// g++ test.cpp --std=c++11
template<class T>
double Combiner(double a, double b, T func){
return func(a,b);
}
double Add(double a, double b){
return a+b;
}
double Mult(double a, double b){
return a*b;
}
int main(){
Combiner(12,13,Add);
Combiner(12,13,Mult);
}
typedef
.