回 帖 发 新 帖 刷新版面

主题:[C++]帮帮忙看看这个定义是什么意思,本人没看懂

class CSingleton
{
public:
    static CSingleton* getInstance();
    static void cleanInstance();
    int getValue();
    void setValue(int iValue);
private:
    int m_iValue;
    static CSingleton* m_pSingleton;
    CSingleton();
    ~CSingleton();
};

CSingleton* CSingleton::m_pSingleton = NULL;  //就是这行,我以为只要使用CSingleton::m_pSingleton = 
                                            //  NULL就可以了为什么前面还要加CSingleton*

回复列表 (共2个回复)

沙发

有人知道么,帮帮忙

板凳

要分清申明和定义。

class CSingleton
{
public:
    int getValue();                  // 这是申明成员函数
private:
    static CSingleton* m_pSingleton; // 这是申明static变量
};

CSingleton* CSingleton::m_pSingleton = NULL; // 这是定义static变量,定义的同时指定了初始值

int CSingleton::getValue()                   // 这是定义成员函数
{
    return XXX;
}

CSingleton::m_pSingleton = NULL;这种写法是在赋值,赋值的语句应该写到函数里面,而不是直接放在外面。定义才能放在外面。

我来回复

您尚未登录,请登录后再回复。点此登录或注册