Bonjour.
J'ai un .cpp qui encapsule une map global et 2-3 fonctions qui la manipule :
Dans d'autre fichier cpp la fonction addElement est appelé lors de l'initialisation d'une variable global de cette manière
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 namespace { std::map<std::string,int > maMap; } void addElement(const std::string &name, int i) { maMap[name] = i; }
seulement ça crash. C'est comme si la map n'était pas encore initialisée. Si j'utilise un pointeur ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 namespace { bool Init() { addElement("test",10); return true; } bool initialized = Init(); }
J'ai du mal à comprendre pourquoi. Es ce que l'appel au constructeur des objets globaux se fait après l'initialisation des variables globales POD?
En gros ce que je veux faire :
1- j'ai une map qui représente un singleton.
2- j'ai une fonction qui permet d'enregistrer une information dans cette map.
3- l'enregistrement de cette information doit être faite qu'une seule fois.
le deuxième bout de code est il correcte? je fait de temps en temps cela quand je doit initialiser des chose global. Comme par exemple une fonction d'initialisation d'un framework. J'utilise un bouleen global qui est initialisé par l'appel d'une fonction. Cette fonction va ainsi initialiser les partie globales.
![]()
Partager