如何在回调函数中调用某个类的成员函数?

CunningBoy 2003-09-27 11:48:03
我的程序中需要在回调函数中使用类的成员函数,但是我看了好多人的帖子都说回调函数必须是全局的或是类的静态函数,这样以来我在这个回调函数中使用类的其他成员函数就不行了。请问我该如何处理这个问题啊?请说明清楚一点,最好是有一段示例代码。谢谢!
下面是我的程序的部分示例代码:

class DDN
{
public:
bool sen(char a);
}

void callback(char b) //callback是一个回调函数
{
……
DDN* p
p->sen(b); // 这句在运行时会出错
……
}

另:我的回调函数不是被系统调用的,而是被我自己写的动态连接库调用的。
...全文
611 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CunningBoy 2003-09-28
  • 打赏
  • 举报
回复
class DDN
{
public:
bool sen(char a);
}

void callback(char b) //callback是一个回调函数
{
……
DDN* p = new DDN(_); //这里的DDN(_)里的参数该填什么啊?
p->sen(b); // 这句在运行时会出错
delete p;
……
}

请问上面的new DDN()中的参数该添什么啊?
Paris_Luo 2003-09-28
  • 打赏
  • 举报
回复
1.传对象指针

2.new-delete
DDN* p = new DDN(_);
p->sen(b);
delete p;
AkiraChing 2003-09-28
  • 打赏
  • 举报
回复
这样子写啊
class DDN
{
public:
bool sen(char a);
static void callback(LPVOID param);
void mcallback(...);
}

//静态函数
void DDN::callback(LPVOID param);
{
DDN* pDDN=(DDN*)param;
return pDDN->mcallback(...);
}

//成员函数
void DDN::mcallback(...)
{
...
//这里可以访问成员变量。
}


这篇文章对你可能有些帮助
http://www.flounder.com/callbacks.htm
flinming 2003-09-28
  • 打赏
  • 举报
回复
你在回调函数里发送一个消息出来,在外面在做sen,这样可以么?
tolixiaohui 2003-09-28
  • 打赏
  • 举报
回复
回调函数作为类的成员函数必须是静态的。

因为回调函数是由操作系统调用的,

即使类没有实例,这个函数也应该是可以调用的。
ac1998 2003-09-28
  • 打赏
  • 举报
回复



up.

up.
xtmzl 2003-09-28
  • 打赏
  • 举报
回复
class DDN
{
public:
bool sen(char a);
}

void callback(char b) //callback是一个回调函数
{
……
DDN* p = new DDN(_);
p->sen(b); // 这句在运行时会出错
delete p;
……
}
harrypotter 2003-09-27
  • 打赏
  • 举报
回复
把你得类的对象作为你的回掉函数的一个参数,
然后调用.
void callback(LPVOID pDDN)
{

pDDN->sen(b);
}

大概意思就是这样,需要注意是不是在同一个空间中.

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧