我想初始化一个静态attribut,但我不知道为什么会出现这个错误。
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;
}
我认为实例已正确初始化,不是吗? 提前致谢
答案 0 :(得分:2)
你需要静态的类型:
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;
}