C++静态函数中调用非静态成员函数或变量
来源:互联网 发布:淘宝收评价的是真的吗 编辑:程序博客网 时间:2024/06/05 22:46
用static声明的函数是静态函数,在调用该函数时,不会将对象的引用传递给它,所以在static函数中不可访问非static的成员
但实际情况中,我们经常会需要在静态函数中使用非静态函数或变量。
如下代码中ThreadProc是静态函数,线程启动时会自动调用
在此函数中需使用非静态成员变量m_nMark ,此时不可以在ThreadProc中直接调用。
解决方法:先声明一个自己类型的静态变量m_staticSelf,然后对其进行this赋值,最后在静态函数中调用对应m_staticSefl中的函数或变量即可,其实就是间接的调用自己的函数或变量。
.h
class RecorderNative
{
private:
static RecorderNative* m_staticSelf;
int m_nMark;
public:
RecorderNative();
~RecorderNative();
private:
static DWORD WINAPI ThreadProc(LPVOID lpParam);
void Process( );
};
.cpp
RecorderNative* RecorderNative::m_staticSelf;
RecorderNative::RecorderNative()
{
m_staticSelf = this;
}
RecorderNative::~RecorderNative()
{
}
DWORD WINAPI RecorderNative::ThreadProc(LPVOID lpParam)
{
m_staticSelf->Process();
return 0;
}
void RecorderNative::Process( )
{
m_nMark = 1;
}
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- 回调函数(类静态函数)中调用类中的非静态成员变量或非静态成员函数
- C++静态函数中调用非静态成员函数或变量
- 回调函数中如何调用类中的非静态成员变量或非静态成员函数
- [转]回调函数中调用类中的非静态成员变量或非静态成员函数
- 静态成员函数调用非静态成员变量
- 静态成员函数调用非静态成员变量
- 用静态成员函数调用非静态成员变量
- 静态成员函数调用非静态成员变量
- linux之文件系统制作及移植
- 双向链表
- Calculate superficial area and volume of mesh with Three.js(WebGL)
- ecshop二次开发--QQ客服
- Android开发点滴(七) 改进版天气预报
- C++静态函数中调用非静态成员函数或变量
- 关于iOS10访问通讯录崩溃问题
- 谈谈北斗导航及其意义
- CSS初始化代码_Div+CSS教程
- android 小知识
- 关于开启不保留活动后引发RestoreInstanceState容易崩溃的问题小记
- 关于redis和memcache的使用选择
- Tomcat相关参数调整(windows)
- TabLayout+ViewPager 设置icon