我们知道,其实在C++中想要在静态成员函数中访问非静态成员变量是不可行的,因为静态成员变量是属于类的,而不是对象的,可能对象还未初始化的时候我们就去访问非静态的成员变量,这时就会发生错误。下面写个简单的例子说明下:
#include <iostream>
using namespace std;
class Demo
{
public:
Demo(int i)
{
this->m_data = i;
}
static int getNumber()
{
return m_data;
}
public:
int m_data;
};
int main()
{
cout<<Demo::getNumber()<<endl;
}
此时我们编译过后会发生错误。
那么如果我们有时候可能确实需要在静态成员函数中访问非静态成员变量,那我们该怎么做呢?
首先为了接下来的描述,我先定义一个单例模板类:
#include <stdlib.h>
template<class T>
class TSingleton
{
public:
//create
static void Create()
{
if ( !ms_pObject )
{
ms_pObject = new T;
}
}
//destroy
static void Destroy()
{