我想初始化一个静态属性,但我不知道为什么会出现此错误。

class LancerDisqueDur
{

private:
 static LancerDisqueDur *m_instance;

public:
 static LancerDisqueDur* instance();
 void afficherDetail();

};


还有我的.cpp

LancerDisqueDur::m_instance=NULL;

LancerDisqueDur* LancerDisqueDur::instance()
{
if(m_instance==NULL)
{
    m_instance=new LancerDisqueDur();
    std::cout << "Démarrage du disque" << std::endl;
}

return m_instance;
}


我认为实例已正确初始化,不是吗?
提前致谢

最佳答案

您需要静态类型:

LancerDisqueDur* LancerDisqueDur::m_instance=NULL;


请注意,可以通过在static instance()`方法内使用static实例大大简化代码。

class LancerDisqueDur
{

public:
 static LancerDisqueDur& instance();
 void afficherDetail();
};

LancerDisqueDur& LancerDisqueDur::instance()
{
    static LancerDisqueDur instance;
    std::cout << "Démarrage du disque" << std::endl;
    return instance;
}

09-06 17:41