因为一个类会用到多个回调函数, 而且这个类的多个地方都会调用, 为了避免麻烦, 所以想做一个回调函数表但是问题是:class A 调用B类的回调函数 Class BClass B : public A, public CDialog1. 怎么定义一个回调函数表? 能不能定义回调函数表? 1. 现在想把B的回调函数传递给A类, 在什么时候传递给A不会出错呢?
我得意思是: class B 有个多个静态函数 static int CALLBACK ExecuteAction(LPVOID lParam,TIMER_ITEM stTimerItem); //执行 动作 static int CALLBACK StopAction(LPVOID lParam,TIMER_ITEM stTimerItem); //停止 动作 static CString CALLBACK GetPass()怎么把这些函数做到一个数组里面, 然后把这个数组传递给 class A, 然后A通过数组访问这些函数地址
将用到的函数定义成函数指针的样式,可以做成一个回调函数表 实际上是一个指针列表
2、因为不太明白你的意思,不太好说,但如果用函数指针的方式的话将函数指针以参数方式传递给A应该是不会出错的3、需要注意的是函数指针的定义和回调函数必须是STATIC的
我得意思是:
class B 有个多个静态函数
static int CALLBACK ExecuteAction(LPVOID lParam,TIMER_ITEM stTimerItem); //执行 动作
static int CALLBACK StopAction(LPVOID lParam,TIMER_ITEM stTimerItem); //停止 动作
static CString CALLBACK GetPass()怎么把这些函数做到一个数组里面, 然后把这个数组传递给 class A, 然后A通过数组访问这些函数地址
char* const cmd;
void (*funct)();
};
static cmd_info cmd_list[] ={
{"ExecuteAction",ExecuteAction},
{"StopAction",StopAction},
{"GetPass",GetPass},
{NULL,NULL}
};
static void do_cmd(
const char *const cmd
){
struct cmd_info *cur_cmd;
cur_cmd = cmd_list;
while(
(cur_cmd!=NULL) && (::strcmp(cur_cmd->cmd,cmd)!=0))
{
cur_cmd++;
}
if(cur_cmd ==NULL){
TRACE("Command not founded\n");
}
else{
cur_cmd->funct();
}
}
int main()
{
char cmd[100];
memset(cmd,'\0',100);
memcpy(cmd,"GetPass",50);//调GetPass回调函数
do_cmd(cmd);
}
}
以后你想正么做就真么做了
可是看你后面的话,好像意思又是说A类会用到其他DLL里的函数。
姨,我怎么没有想到呢?