Bonjour,
je convertis actuellement un projet réalisé en java en C++. Je me retrouve confronté à un problème assez embêtant, celui-ci concerne seulement 2 classes :
http://pastebin.com/msiLGznV et http://pastebin.com/66YjbDpa.
Le problème, c'est même se produit avant le main. Quand je lis le fichier txt et je vais créer une nouvelle insertion dans la map, j'utilise une classe pour insérer la valeur. Dans cette classe, il y a un une autre map static constante, qui logiquement devrait être déjà initialisée lorsque j'appelle le constructeur, puisqu'il s'agit d'un const static. Or le problème, c'est qu'il n'exécute pas le bout de code et bien sûr, cela plante car chercher une valeur dans une map vide ...
Bref, j'ai entendu parler du static initialization order fiasco mais à l'execption que j'ai des statics consts. Mais j'ai remarqué que c'est pas tout à fait ça car je fais pas des appels croisé, dans le sens où c'est seulement le constructeur de la deuxième classe qui appelle mon const static map.
Une solution très moche que j'ai trouvé et de virer le const static pour un attribut privé, mais cette solution me dérange car il y a énomément de doublon (actuellement 7462 fois la même map construite et stocké en mémoire).
Qqun aurait-il une solution plus adéquate ?
En passant, vous verrez en commentaire que si je mets une variable pour le path du fichier, cela ne marche pas alors qu'en dure oui, si vous avez aussi une solution, ça serait sympa !
Merci d'avance