类成员回调函数问题?

panyc33 2010-10-22 04:58:40
各路高手,本人在项目中遇到一个技术问题,定义一类如下:


代码:

class CRecvDataThreadProc :public CThreadProc
{
public:
typedef void (CRecvDataThreadProc::*pSetRecvDataFunc)(DWORD dwData);

public:
CRecvDataThreadProc();
virtual ~CRecvDataThreadProc();

private:
void SetRecvDataOn(DWORD dwtmp);
void SetRecvDataOff(DWORD dwTmp);

private:
。。。
pSetRecvDataFunc m_pfnSet;
};

CRecvDataThreadProc::CRecvDataThreadProc()
:m_hWorkSemaphore(NULL)
{
>>error m_pfnSet = SetRecvDataOff;

::CloseHandle(m_hEventKillThread);

m_hEventKillThread = ::CreateEvent(NULL , TRUE , FALSE , NULL);
}



在>>error处我在vs2003下编译能通过并能正常运行,但在vs2010下报错:


代码:
Error 7 error C3867: 'CRecvDataThreadProc::SetRecvDataOff': function call missing argument list; use '&CRecvDataThreadProc::SetRecvDataOff' to create a pointer to member e:\work\l2ds_qk\l2ds_20100906\l2ds\threadproc.cpp 78 1 L2DS
虽然貌似加static可以解决,但那样代码就要做大量改动,请问各位有什么高招,先行谢过。
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
信阳毛尖 2010-10-24
  • 打赏
  • 举报
回复
问题解决了么?
FoxBryant 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 libinfei8848 的回复:]
回调函数,需要全局函数或者静态函数
如果必须是类成员的话,前面加个Static
[/Quote]

同意楼上
libinfei8848 2010-10-22
  • 打赏
  • 举报
回复
回调函数,需要全局函数或者静态函数
如果必须是类成员的话,前面加个Static
visualwind 2010-10-22
  • 打赏
  • 举报
回复
m_pfnSet = reinterpret_cast<pSetRecvDataFunc>(&SetRecvDataOff);
信阳毛尖 2010-10-22
  • 打赏
  • 举报
回复
把这一句m_pfnSet = SetRecvDataOff改为
m_pfnSet = &CRecvDataThreadProc::SetRecvDataOff()试试

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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