在某些情况下,我们需要在程序的一个地方根据实际情况来调用不同的函数,这时就可以通过typedef函数指针来实现,这样就可以保证在不修改调用处代码的情况下完成不同函数的调用。
以下就是通过typedef函数指针实现的一个通过一参数(opt_id)来决定调用函数的代码实现:
#include <iostream>
typedef float (*PROC)(float a,float b);
float add(float a, float b){
return a+b;
}
float sub(float a, float b){
return a-b;
}
float mul(float a, float b){
return a*b;
}
PROC choose(int id){
switch(id){
case 0:
std::cout<<"add"<<std::endl;
return add;
case 1:
std::cout<<"sub"<<std::endl;
return sub;
case 2:
std::cout<<"mul"<<std::endl;
return mul;
default:
break;
}
return nullptr;
}
int main() {
int opt_id = 1;
PROC opt = choose(opt_id);
float result = opt(2,3);
//float result = (*opt)(2,3);
std::cout<<"result:"<<result<<std::endl;
return 0;
}