Bonjour.
Je suis entrain de coder un petit programme qui est sensé transformer un fichier csv en script SQL. Pour cela j'ai écrit différentes structures de données, et une classe registre (singleton), qui contient plein de vecteurs pour stocker mes structures de données.
Lorsque je fais appel à la fonction getInstance() de ma classe Registre, celle-ci (re)crée une nouvelle instance et je n'accède plus à mes vecteurs. y'a-t'il une subtilité, en C++, dans l'écriture d'une classe Singleton que je n'aurai pas saisie? Serait-ce à cause du destructeur public?
PS: Voila mes code soerce qui me pose problème:
registre.h:l'implémentation de ma fonction getInstance():
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
42
43
44
45
46
47
48
49
50 #ifndef REGISTRE_H #define REGISTRE_H #include <vector> #include "structures.h" using namespace std; class Registre { public: static Registre& getInstance(); bool impactExists(const Impact& impact); void addImpact(const Impact& impact); bool incidentExists(const Incident& incident); void addIncident(const Incident& incident); bool plateformeExists(const Plateforme& plateforme); void addPlateforme(Plateforme& plateforme); bool sousTypeJeuExists(const SousTypeJeu& sousTypeJeu); void addSousTypeJeu(SousTypeJeu& sousTypeJeu); bool typeImpactExists(const TypeImpact& typeImpact); void addTypeImpact(TypeImpact& typeImpact); bool typeIncidentExists(const TypeIncident& typeIncident); void addTypeIncident(TypeIncident& typeIncident); bool typeJeuExists(const TypeJeu& typeJeu); void addTypeJeu(TypeJeu& typeJeu); virtual ~Registre(); protected: private: Registre(); vector<Impact> impacts; vector<Incident> incidents; vector<Plateforme> plateformes; vector<SousTypeJeu> sousTypesJeu; vector<TypeImpact> typesImpact; vector<TypeIncident> typesIncident; vector<TypeJeu> typesJeu; }; #endif // REGISTRE_HPS2: J'utilise mingw sur un windows XP pro SP2, sur un processeur Intel Pentium 4 HT.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Registre& Registre::getInstance() { static Registre instance; return instance; }
Partager