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
Code : Sélectionner tout - Visualiser dans une fenêtre à part GlobalClass sing=*p1;ne pose aucun problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part GlobalClass &ref=*p1;
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; }
Partager