ตั้งแต่ C ++ 11 คุณสามารถใช้ไลบรารีที่ใช้งานได้เพื่อทำสิ่งนี้โดยสังเขปและเป็นเรื่องธรรมดา ไวยากรณ์คือเช่น
std::function<bool (int)>
ที่เป็นประเภทการกลับมาที่นี่ของฟังก์ชั่นหนึ่งที่มีการโต้แย้งอาร์กิวเมนต์แรกเป็นประเภทbool
int
ฉันได้รวมโปรแกรมตัวอย่างไว้ด้านล่าง:
// 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);
}
แม้ว่าบางครั้งจะสะดวกกว่าในการใช้ฟังก์ชันเทมเพลต:
// 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
อาร์เรย์เป็นตัวแปรใช้เสมอ