為何我不能夠將回調函數放入類中呢?簡單問題為何沒人回

无敌魔仙 2003-03-11 11:54:38
因為回調函數要用到該類的很多數据成員,所以我必須將其放入該類中,但是最后提示,
error C2440: 'type cast' : cannot convert from 'long (__stdcall CallBack::*)(struct HWND__ *,struct videohdr_tag *)' to 'void *'
為何?
...全文
30 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
corinna 2003-03-11
  • 打赏
  • 举报
回复
在类中加上如下几个函数:
void StartThread(void);
virtual UINT ThreadFunction(void);
static UINT __bogusthreadfunc(LPVOID lpparam);
///////////////////////////////////////
void CLeftFormView::StartThread()
{
AfxBeginThread(__bogusthreadfunc,this);
}

UINT CLeftFormView::__bogusthreadfunc(LPVOID lpparam)
{
ThreadFunction();
}
UINT CLeftFormView::ThreadFunction(void)
{
.....
codeproject 2003-03-11
  • 打赏
  • 举报
回复
or global
codeproject 2003-03-11
  • 打赏
  • 举报
回复
use static
callback must static !!!
无敌魔仙 2003-03-11
  • 打赏
  • 举报
回复
算了,現在給分
无敌魔仙 2003-03-11
  • 打赏
  • 举报
回复
樓上的,我在我類中的构造函數中可以訪問數据成員嗎,答案可以,那么我可以在我的靜態函數中訪問我的數据成員嗎?
icansaymyabc 2003-03-11
  • 打赏
  • 举报
回复
呵呵,原来你是这个意思。
方法是基于对象而存在的,如果你希望不创立对象就使用一个类的方法。就如同你要一个未出生的小孩帮你办事。哪怕你已经替他取好了名字,买好了房子。只要他没生出来,他就是作为一个概念存在的,而没有任何实际意义。
类也是一个概念而已,如果你不为他创建对象,类的代码就不可能被调用。

无敌魔仙 2003-03-11
  • 打赏
  • 举报
回复
to 学习与进步:
那要先創立對象才能訪問啊,這樣不好吧,如果沒有對象只有類,怎么訪問啊,万一沒有辦法,就只能這樣了,哎還等一下吧,看看還有沒有人回我......
icansaymyabc 2003-03-11
  • 打赏
  • 举报
回复
干吗一定要把回调函数放进类?
你在回调函数里调用类里的那个函数不就得了?
无敌魔仙 2003-03-11
  • 打赏
  • 举报
回复
提示如下:
error C2597: illegal reference to data member 'CallBack::iWidthPic' in a static member function
无敌魔仙 2003-03-11
  • 打赏
  • 举报
回复
我用了,當我直接訪問數据成員時出現:
錯誤引用數据成員的提示,為何?
无敌魔仙 2003-03-11
  • 打赏
  • 举报
回复
我先try it on,然后再給分
FlyingSch 2003-03-11
  • 打赏
  • 举报
回复
回调函数要求为_stdcall,而你的那个成员函数为thiscall,两个
的调用方式不同,前者不要求传递this指针而后者要。
解决方法,把你的回调函数声明成static
无敌魔仙 2003-03-11
  • 打赏
  • 举报
回复
to 快乐的小熊
但是static卻不能訪問類數据成員

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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