Bonjour,

J'essaie d'implementer la classe singleton avec un desctructeur privé, sauf qu'à la compilation j'ai cette erreur (GlobalClass::~GlobalClass'*: impossible d'accéder à private membre déclaré(e) dans la classe 'GlobalClass) dans ligne :
alors que la ligne ne pose aucun problème.
Quelqu'un peut m'expliquer?
Rq: Le programme compile qd le destucteur est publique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class GlobalClass
{
    int m_value;
    static GlobalClass *s_instance;
    GlobalClass(int v = 0)
    {
        m_value = v;
		cout<<" construct singleton"<<endl;
    }
	~GlobalClass(){}
  public:
    int get_value()
    {
        return m_value;
    }
    void set_value(int v)
    {
        m_value = v;
    }
    static GlobalClass *instance()
    {
        if (!s_instance)
          s_instance = new GlobalClass;
        return s_instance;
    }
};

// Allocating and initializing GlobalClass's
// static data member.  The pointer is being
// allocated - not the object inself.
GlobalClass *GlobalClass::s_instance = NULL;

int main()
{
GlobalClass *p1=GlobalClass::instance();
	GlobalClass sing=*p1; // le problème est là
	GlobalClass *p2=p1->instance();
	GlobalClass &ref=*p1;
	p1->set_value(3);
return 0;
}