Qt 非静态成员函数作为线程函数?
2017-09-26 17:13
127 查看
Qt使用中,有次使用非静态成员函数作为线程函数
即:
trhead_creat(&id,,NULL,线程函数,NULL);
出现了问题,说invalid use of non-static nember function
查询了资料发现,类的非静态成员函数都有一个隐含的参数即,this指针。
看似线程函数一个参数没有,实际上隐含了一个参数,当然无法调用。
要么将线程函数转化成静态成员函数,为类所有,防止出现this指针。
但有时候线程函数中需要使用一些类的非静态成员函数,则需要this指针,很不方便。
也可以使用非静态成员函数作为线程函数的。
即:
trhead_creat(&id,,NULL,线程函数fun,this);
void *fun(void *arg)
{
Myclass *p = (Myclass *)arg;
p->func();
}
即:
trhead_creat(&id,,NULL,线程函数,NULL);
出现了问题,说invalid use of non-static nember function
查询了资料发现,类的非静态成员函数都有一个隐含的参数即,this指针。
看似线程函数一个参数没有,实际上隐含了一个参数,当然无法调用。
要么将线程函数转化成静态成员函数,为类所有,防止出现this指针。
但有时候线程函数中需要使用一些类的非静态成员函数,则需要this指针,很不方便。
也可以使用非静态成员函数作为线程函数的。
即:
trhead_creat(&id,,NULL,线程函数fun,this);
void *fun(void *arg)
{
Myclass *p = (Myclass *)arg;
p->func();
}
相关文章推荐
- C++ 类非静态成员函数作为线程入口函数实现
- 非静态成员函数作为线程入口
- 非静态成员函数作为线程函数
- 用非静态成员函数作为线程启动函数
- 将类成员函数作为线程入口函数——关于C++ 类静态成员的学习
- C++中 线程函数为静态函数 及 类成员函数作为回调函数
- 函数内静态成员——线程不安全
- qt 静态成员函数
- C++类的静态成员函数在多线程的工作机制以及运行过程中强制结束线程实验
- Qt 静态成员函数
- 类成员函数作为线程函数使用
- 为什么线程函数只能用类的静态成员函数?
- 任意类成员函数作为线程参数的封装
- 利用QT的QThread将一个类中的成员函数转到线程下执行
- 任意类成员函数作为线程参数的封装ex
- C++中类的成员函数作为 pthread_create的线程函数
- 用类的非静态成员函数作为线程入口函数的方法--转
- 类成员函数作为线程参数的用法
- parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)VC以类的成员函数作为线程调用函数时易出错问题解决办法
- 类的非静态成员函数作为线程函数的注意事项