user2437640
user2437640

Reputation:

C++ require a type specifer for all declarations

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

Answers (1)

juanchopanza
juanchopanza

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 staticinstance()` 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

Related Questions