线程对应的函数怎样使用类成员函数?? 第三个参数指定了必须为线程写一个全局函数,它的返回值必须为 UINT类型,而且必须有LPVOID类型的参数. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类的普通成员函数均有一个this指针,不能作为CreateThread的参数,但类的静态成员函数可以。你可以把this指针包含在线程的启动参数中,然后在线程的执行函数里就可以通过那个指针访问类的成员了。 panda_w和FBStudio都说得很对,只有这样了 的确如楼上各位兄弟所说,类成员函数做线程执行函数必须是静态的,这是因为C++在编译时,为了处理重载的函数名,将非静态的成员函数名改为唯一的名字(一长串乱七八糟的字符,如果你有兴趣,可以研究C++的处理办法)而CreateThread的第三个参数是一个函数指针,在编译后这个函数名与类的成员函数名是不相同的,所以出错.我想还有二种方法你可以参考一下:(你原来的类用某类代替)(1) 从CWinThread类派生出需要的线程,在其中实现你想要在某类中实现的成员函数,具体的实现方法视线程的类型不同而不同,你可以参考一下VC中的例子.之后,在你的某类中添加一个新线程类的成员变量,在需要的时候启动线程.可以用一些Event等控制线程的运行.如果新线程类需要访问某类的成员变量,可以将某类的this指针传给新线程类并声明friend.(2) 直接从CWinThread派生出某类.我认为以上两种方法更符合面向对象的思想. 关于驱动编程的两个警告如何消除哦? ATL初学者!问题 MFC_对话框_类 的 删除 循环读取数据的问题 一个简单的问题,怎样将工具栏上的文字显示在图标的右边? struct MO_msg{sourceUser char(21);msg char(161)} 赋值 简单。马上给分噢 关于atl的调试问题 VC++新手上路,太难!版主应该看看!! 怎样实现图形的任意旋转? 请帮帮我?关于VC的多线程? 窗口类中如何调用视图类 nt service
这是因为C++在编译时,为了处理重载的函数名,将非静态的成员函数名改为
唯一的名字(一长串乱七八糟的字符,如果你有兴趣,可以研究C++的处理办法)
而CreateThread的第三个参数是一个函数指针,在编译后这个函数名与类的
成员函数名是不相同的,所以出错.我想还有二种方法你可以参考一下:(你原来的类用某类代替)
(1) 从CWinThread类派生出需要的线程,在其中实现你想要在某类中实现的成员
函数,具体的实现方法视线程的类型不同而不同,你可以参考一下VC中的例子.之
后,在你的某类中添加一个新线程类的成员变量,在需要的时候启动线程.可以用
一些Event等控制线程的运行.如果新线程类需要访问某类的成员变量,可以将某
类的this指针传给新线程类并声明friend.
(2) 直接从CWinThread派生出某类.
我认为以上两种方法更符合面向对象的思想.