定义函数指针类型,然后使用模板函数,调用函数指针数组映射的实际函数。
#include <iostream>
//定义实际函数
void apple1() { std::cout << "函数一调用" << std::endl; }
void apple2() { std::cout << "函数二调用" << std::endl; }
void apple3() { std::cout << "函数三调用" << std::endl; }
//定义一个函数指针类型
typedef void (*AppleFunc)();
//定义一个模板函数,用于调用对应的apple函数
template<int N>
void callApple() {
//使用静态断言来确保N在有效范围内
static_assert(N >= 1 && N <= 3, "N 取值要在1至3之间");
//使用一个函数指针数组来映射到实际函数
static const AppleFunc appleFunc[] = { nullptr,apple1,apple2,apple3 };
appleFunc[N]();
}
int main() {
callApple<1>();
callApple<2>();
callApple<3>();
return 0;
}