createthread函数的第三个参数可不可以是一个类的成员函数? 大家帮忙啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ThreadFunc函数是CMainFrame的成员函数? class B;class A{public:void CallThread(){ ::_beginthread(&B::ThreadFunc,0,NULL); }};class B{public:static VOID ThreadFunc(PVOID){ cout<<" act of mine ..."<<endl;}};int main(){ A a; a.CallThread(); //ok! return 0;} 看看这个:http://expert.csdn.net/Expert/TopicView2.asp?id=837099&datebasetype=now 我对 systree() 说的"使用裸函数等技术来自己调整栈" 很感兴趣!!高手出现总是惊鸿一瞥。 to sans(sans) 在静态成员函数调用的非静态函数中可以使用非静态数据成员吗?我试了试,好像是不能? 是的,可以,但必须定义为静态成员函数。但不能访问非静态数据成员。高明的做法是传递一个this指针,那么通过强制转型之后可以访问类的内部成员函数,那么你就可以访问非静态数据成员了。可以给你例子:Class ThreadObject{public: ThreadObject(); void StartThread();static DWORD WINAPI ThreadFunc(LPVOID param); ...................protected: virtual DWORD ThreadMemberFunc();//定义为可重载的,这样所有派生类都可以重载该函数产生线程。 ........}void ThreadObject::StartThread()//注意该函数的编写{ _beginthreadex(NULL, 0, (PBEGINTHREADEX_THREADFUNC)ThreadObject::ThreadFunc, (LPVOID)this,//传递this指针 .......);}DWORD WINAPI ThreadObject::ThreadFunc(LPVOID param){ ThreadObject * pto = (ThreadObject)param //此处是比较高明的做法 return pto->ThreadMemberFunc();}void main(){ ThreadObject obj; obj.StartThread();}这个例子通过传递this指针间接访问了类的非静态成员,楼主可以参考 关于GRIDCTRL右键点击每个单元格弹出菜单 大家推荐一个Mfc的udp控件,急用!!! 2个简单的SDK 的问题+一个简单的杀毒软件的问题,在线等了, 解决了就结贴~ 高分求一个最简单的能显示word的activex控件. 怎么得到一个对话框控件相对对话框的坐标(在线等,立即给分) 如何获取一个目录名和一个目录下所有文件的文件名 如何用VC++制作录音机及读取WAV文件? 请问,做一个DVD卡拉OK点播系统,需要哪些技术呀? 求助,MFC下GetPixel()的效率问题。。。 以用户登录身份打开浏览器打开指定页面问题,在线等 彩色图像的亮度和对比度? VC++ 与 C++ 有什么不同
public:
void CallThread(){
::_beginthread(&B::ThreadFunc,0,NULL);
}
};class B{
public:
static VOID ThreadFunc(PVOID){ cout<<" act of mine ..."<<endl;}
};int main()
{
A a; a.CallThread(); //ok!
return 0;
}
http://expert.csdn.net/Expert/TopicView2.asp?id=837099&datebasetype=now
在静态成员函数调用的非静态函数中可以使用非静态数据成员吗?
我试了试,好像是不能?
但不能访问非静态数据成员。高明的做法是传递一个this指针,那么通过强制转型之后可以访问类的内部成员函数,那么你就可以访问非静态数据成员了。
可以给你例子:Class ThreadObject
{
public:
ThreadObject();
void StartThread();
static DWORD WINAPI ThreadFunc(LPVOID param);
...................protected:
virtual DWORD ThreadMemberFunc();//定义为可重载的,这样所有派生类都可以重载该函数产生线程。
........
}void ThreadObject::StartThread()//注意该函数的编写
{
_beginthreadex(NULL,
0,
(PBEGINTHREADEX_THREADFUNC)ThreadObject::ThreadFunc,
(LPVOID)this,//传递this指针
.......);
}
DWORD WINAPI ThreadObject::ThreadFunc(LPVOID param)
{
ThreadObject * pto = (ThreadObject)param //此处是比较高明的做法
return pto->ThreadMemberFunc();
}
void main()
{
ThreadObject obj;
obj.StartThread();
}这个例子通过传递this指针间接访问了类的非静态成员,楼主可以参考