您的位置:首页 > 编程语言 > C语言/C++

C++静态函数中调用非静态成员函数或变量

2016-10-21 16:29 441 查看
用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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: