访问类的静态成员变量的时候出现undefined reference to

2025年03月13日 06:26
有3个网友回答
网友(1):

静态成员变量需要在类体外定义,类体里的只算是声明:看如下的修改:

#include
using namespace std;
class CSingleton{
    //其他成员
public:    
    static CSingleton* GetInstance();    
    int age;
     
private:    
    CSingleton(){};    
    static CSingleton* m_pInstance;
};
 
CSingleton* CSingleton::m_pInstance = NULL; //需要在这定义
CSingleton* CSingleton::GetInstance(){      
    if ( m_pInstance == NULL )  
        //判断是否第一次调用       
        m_pInstance = new CSingleton();        
    return m_pInstance;
}
int main(){    
    CSingleton* p1 = CSingleton::GetInstance();   
    p1->age=10;   
    cout<age;  
    return 0;
}

网友(2):

static CSingleton* m_pInstance;改为static CSingleton* m_pInstance = NULL;声明时候顺便初始化为NULL即可。你这里只声明未定义啊。

网友(3):

在main()前加一条静态变量初始化

CSingleton::m_pInstance = NULL;
int main()
{
    CSingleton* p1 = CSingleton::GetInstance();
    p1->age=10;
    cout<age;
    return 0;
}