实现方法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
",
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
",
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
",k, pFuncList[k](2,4));
}
system("pause");
}