请教怎么在子线程中再创建新的线程
请问如何在子线程中再创建新的线程?
主对话框类为: CMytestDlg
CMytestDlg::OnButton1()
{
...
..=AfxBeginThread(fun1,this,THREAD_PRIORITY_HIGHEST) //里面创建线程1
...
}
UINT CMytestDlg::fun1(void *param)
{
...
//在该线程中再创建新的线程出错
pWorkSimulinkThread=AfxBeginThread (SimulinkThread,this,THREAD_PRIORITY_HIGHEST-1);
//error C2671: static member functions do not have 'this ' pointers,
//若将this换成0则提示:
//error C2597: illegal reference to data member
// 'CMytestDlg::pWorkSimulinkThread ' in a static member function
...
}
请问如何在主线程的子线程中再创建新的线程呢?
谢谢!
------解决方案--------------------
这个问题和子线程再创建线程没有关系,问题在于fun1是类的静态成员函数,不可以使用this指针,具体的看看C++的书吧。
AfxBeginThread (SimulinkThread,this,THREAD_PRIORITY_HIGHEST-1);
~~~~~~~就是这里!
------解决方案--------------------
?
------解决方案--------------------
静态成员函数对于这个类的所有实例对象仅有一个,this指针指的是当前的实例类对象,但是静态成员函数里只能使用静态成员,全局变量,或者某个类实例的指针的成员函数,这个指针依赖于传入参数,直接在子线程的静态函数中使用this指针传递一个当前类的实例是错误的。编译器只是检查出了这个错误,告诉你而已
主对话框类为: CMytestDlg
CMytestDlg::OnButton1()
{
...
..=AfxBeginThread(fun1,this,THREAD_PRIORITY_HIGHEST) //里面创建线程1
...
}
UINT CMytestDlg::fun1(void *param)
{
...
//在该线程中再创建新的线程出错
pWorkSimulinkThread=AfxBeginThread (SimulinkThread,this,THREAD_PRIORITY_HIGHEST-1);
//error C2671: static member functions do not have 'this ' pointers,
//若将this换成0则提示:
//error C2597: illegal reference to data member
// 'CMytestDlg::pWorkSimulinkThread ' in a static member function
...
}
请问如何在主线程的子线程中再创建新的线程呢?
谢谢!
------解决方案--------------------
这个问题和子线程再创建线程没有关系,问题在于fun1是类的静态成员函数,不可以使用this指针,具体的看看C++的书吧。
AfxBeginThread (SimulinkThread,this,THREAD_PRIORITY_HIGHEST-1);
~~~~~~~就是这里!
------解决方案--------------------
?
------解决方案--------------------
静态成员函数对于这个类的所有实例对象仅有一个,this指针指的是当前的实例类对象,但是静态成员函数里只能使用静态成员,全局变量,或者某个类实例的指针的成员函数,这个指针依赖于传入参数,直接在子线程的静态函数中使用this指针传递一个当前类的实例是错误的。编译器只是检查出了这个错误,告诉你而已