实现方法1:
#include <iostream> using namespace std; int func1(int a, int b) { return a+b+10; } int func2(int a, int b) { return a+b+20; } int func3(int a, int b) { return a+b+30; } int func4(int a, int b) { return a+b+40; } int func5(int a, int b) { return a+b+50; } int func_all(int type, int a, int b) { switch(type) { case 0: return func1(a,b); case 1: return func2(a,b); case 2: return func3(a,b); case 3: return func4(a,b); case 4: return func5(a,b); } return 0; } void main() { // PF_CALC pFuncList[5] = {func1, func2, func3, func4, func5}; for (long k=0; k<5; k++) { printf("Test Func %d (2, 4): %d\n", k, func_all(k,2,4)); } system("pause"); }实现方法2:
#include <stdio.h> #include <stdlib.h> typedef int (*PF_CALC) (int a, int b); int func1(int a, int b) { return a+b+10; } int func2(int a, int b) { return a+b+20; } int func3(int a, int b) { return a+b+30; } int func4(int a, int b) { return a+b+40; } int func5(int a, int b) { return a+b+50; } void main() { PF_CALC pFuncList[] = {&func1, &func2, &func3, &func4, &func5}; for (long k=0; k<5; k++) { printf("Test Func %d (2, 4): %d\n", k, pFuncList[k](2,4)); } system("pause"); }3.
#include <stdio.h> #include <stdlib.h> typedef int (*NetMsgFunction) (int a, int b); NetMsgFunction pFuncList[10]; int func1(int a, int b) { return a+b+10; } int func2(int a, int b) { return a+b+20; } int func3(int a, int b) { return a+b+30; } int func4(int a, int b) { return a+b+40; } int func5(int a, int b) { return a+b+50; } void Reg(int nMsgId,NetMsgFunction fuc) { pFuncList[nMsgId] = fuc; } void main() { Reg(0,func1); Reg(1,func2); Reg(2,func3); Reg(3,func4); Reg(4,func5); for (long k=0; k<5; k++) { printf("Test Func %d (2, 4): %d\n",k, pFuncList[k](2,4)); } system("pause"); }