对成员函数实现回调,并访问非静态成员的问题

lsamsony 2004-11-22 10:34:43
如何写
...全文
239 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveghb 2004-11-22
  • 打赏
  • 举报
回复
同意vctool(十万个为什么) 的看法!
把静态函数作为回调函数,把对象指针作为参数,然后里面调用你的成员函数,这样就行了。
lsamsony 2004-11-22
  • 打赏
  • 举报
回复
错了,前提不能是静态成员函数
vctool 2004-11-22
  • 打赏
  • 举报
回复
先写一个静态函数,作为回调函数,并把对象的指针作为参数,或用全局变量等手段传入这个静态函数就可以了.
老夏Max 2004-11-22
  • 打赏
  • 举报
回复
静态的即可!
呵呵,参考:
定义在类中,做为线程的回调函数使用。
static unsigned __stdcall LoadThumbNail(LPVOID lpParam);

void CPage3::LoadThumbImages()
{
TerminateThread();
m_hThread = (HANDLE)_beginthreadex(NULL,0, LoadThumbNail,(LPVOID)this,0/* CREATE_SUSPENDED*/,&m_dwThreadID);
m_bRunning = TRUE;
}

unsigned __stdcall CPage3::LoadThumbNail(LPVOID lpParam)
{
CPage3* pThumbDlg = (CPage3*)lpParam;
//使用对话框类的变量或者函数
CListCtrl& ListCtrl = pThumbDlg->m_cThumbList;
CImageList* pImgList = &pThumbDlg->m_ImageListThumb;
}
lsamsony 2004-11-22
  • 打赏
  • 举报
回复
就是写一个成员函数作为回调函数用
goodluckyxl 2004-11-22
  • 打赏
  • 举报
回复
如果成员函数不涉及成员变量是可以的
和static一样
否则可以定义处理对象的函数来处理成员函数
回调
sukevin 2004-11-22
  • 打赏
  • 举报
回复
成员函数能回调?!倒是想知道
DentistryDoctor 2004-11-22
  • 打赏
  • 举报
回复
将对象指针作为一个参数传递给回调函数。
Magnus 2004-11-22
  • 打赏
  • 举报
回复
callback要成為成員函數,
必定是靜態的,
而靜態的必定無法訪問非靜態,
flyelf 2004-11-22
  • 打赏
  • 举报
回复
如果该回调函数是静态成员,那么估计该回调函数会有一个context,把对象作为该context,从而得以访问对象成员
老夏Max 2004-11-22
  • 打赏
  • 举报
回复
不懂你的意思,说的明白一点
你到底想干什么吧?
lsamsony 2004-11-22
  • 打赏
  • 举报
回复
静态函数里调用类成员, 不知道
oyljerry 2004-11-22
  • 打赏
  • 举报
回复
把指针传入进去就可以访问了
loveghb 2004-11-22
  • 打赏
  • 举报
回复
只要写一个类的静态函数就可以了,让这个函数是CALLBACK的,然后在静态函数里调用类成员就可以了。静态函数传递不需要this,这样不就行了?
N年前就实现了,否则怎么会出现这么多面向对象的类库啊!
roger_ding 2004-11-22
  • 打赏
  • 举报
回复
只是需要一个变通的方法,可以把对象指针传入该静态成员函数,一个方法是通过某个参数的形式,把this指针传入,通过该指针调用普通成员变量和函数,还有一个方法是在类里建立一个静态成员变量
class CMyClass
{
private:
static CMyClass* m_pThis;

};

每次调用需要callback函数之前把该变量设为this(注意,比较危险,除非你可以肯定程序始终只有一个线程可以调用该callback函数),然后静态函数内部即可通过m_pThis访问普通成员变量和函数
lsamsony 2004-11-22
  • 打赏
  • 举报
回复
听说有人实现了
roger_ding 2004-11-22
  • 打赏
  • 举报
回复
如果是回调,必须使用静态函数,因为普通成员函数有this指针传入,而callback是没有this指针的
lsamsony 2004-11-22
  • 打赏
  • 举报
回复
不会的,静态函数调用成员函数????

16,548

社区成员

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

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

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