Reputation:
I want to initialise an static attribut but I don't know why there is this error.
class LancerDisqueDur
{
private:
static LancerDisqueDur *m_instance;
public:
static LancerDisqueDur* instance();
void afficherDetail();
};
And my .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;
}
I think the instance is correctly initialized , no ? Thanks in advance
Upvotes: 0
Views: 70
Reputation: 227518
you need the type of the static:
LancerDisqueDur* LancerDisqueDur::m_instance=NULL;
Note that you can greatly simplify the code by using a static
instance inside the static
instance()` method.
class LancerDisqueDur
{
public:
static LancerDisqueDur& instance();
void afficherDetail();
};
LancerDisqueDur& LancerDisqueDur::instance()
{
static LancerDisqueDur instance;
std::cout << "Démarrage du disque" << std::endl;
return instance;
}
Upvotes: 2