typedef unsigned (__stdcall *pThread)(void*);类声明
class CThread
{
public:
CThread();
void Call(pThread ThreadFunc, void* security, unsigned initflag, void* arglist, unsigned stack_size);
virtual unsigned __stdcall Oninit();
public:
HANDLE m_hThread;
unsigned* m_threadid;
};实现函数定义
void CThread::Call(pThread ThreadFunc, void* security = NULL, unsigned initflag = 0, void* arglist = NULL, unsigned stack_size = 0)
{
m_hThread = (HANDLE)_beginthreadex(security, stack_size, *ThreadFunc, arglist, initflag, m_threadid);
}当我这样调用
CThread t;
t.Call(t.Oninit(), NULL, 0, NULL, 0);错误信息
错误 1 error C2664: “CThread::CallThread”: 不能将参数 1 从“unsigned int”转换为“pThread”请问如何修改这个错误啊小弟非常感谢
class CThread
{
public:
CThread();
void Call(pThread ThreadFunc, void* security, unsigned initflag, void* arglist, unsigned stack_size);
virtual unsigned __stdcall Oninit();
public:
HANDLE m_hThread;
unsigned* m_threadid;
};实现函数定义
void CThread::Call(pThread ThreadFunc, void* security = NULL, unsigned initflag = 0, void* arglist = NULL, unsigned stack_size = 0)
{
m_hThread = (HANDLE)_beginthreadex(security, stack_size, *ThreadFunc, arglist, initflag, m_threadid);
}当我这样调用
CThread t;
t.Call(t.Oninit(), NULL, 0, NULL, 0);错误信息
错误 1 error C2664: “CThread::CallThread”: 不能将参数 1 从“unsigned int”转换为“pThread”请问如何修改这个错误啊小弟非常感谢
{
public:
CThread();
void Call(pThread ThreadFunc, void* security, unsigned initflag, void* arglist, unsigned stack_size); static unsigned __stdcall Oninit(void*);
public:
HANDLE m_hThread;
unsigned* m_threadid;
};
void CThread::Call(pThread ThreadFunc, void* security = NULL, unsigned initflag = 0, void* arglist = NULL, unsigned stack_size = 0)
{
m_hThread = (HANDLE)_beginthreadex(security, stack_size, *ThreadFunc, arglist, initflag, m_threadid);
}int main( )
{
CThread t;
t.Call( CThread::Oninit, NULL, 0, NULL, 0);
return 0 ;
}
http://topic.csdn.net/u/20090113/21/8f0afb8a-c1a2-49a6-a7a0-5678e7064644.html
首先得要有个线程函数,传送参数是一个CThread指针,在这之后就好办了,在线程函数里就可以用CThread接管了。
例如:
CThread类里,
static unsigned __stdcall ThreadFunc(void *p)
{
CThread *pt = (CThread*)p;
pt->Init.....
pt->run.....
pt->exit....
return 返回值
}
可以些个外包函数,而将这个ThreadFunc作为private吧
static unsigned __stdcall Oninit(void* param)
{
return static_cast<CThread*>(param)->Oninit();
}