std::map static et ajout d'éléments avant le main()
Bonjour,
Je tente actuellement de porter sous Windows un code que j'ai écris et testé sous Linux.
Après avoir installé toutes les bibliothèques nécessaires, je me retrouve avec un joli segfault à la ligne 203 de stl_tree.h lorsque je tente d'insérer (avec std::map::insert) pour la première fois un élément dans une std::map avec std::map::insert().
La std::map en question est une variable statique d'une classe.
J'insère les premiers éléments dans la std::map grâce à une macro DECLARE_ENTRY qui déclare une classe dans un namespace et l'instancie de manière globale, le constructeur de cette classe effecutant une insertion dans la std::map.
Je me demandais donc si l'erreur de segmentation ne viendrait pas du fait que je tente d'insérer des éléments dans une std::map avant même d'être rentré dans le main() vu que le reste du code semble bien s'exécuter et que l'insertion à l'intérieur du main() semble ne pas poser de problèmes.
Malheureusement, si tel est le cas, je vois mal quelle alternative j'aurais.
En effet, le but de DECLARE_ENTRY étant de permettre, à l'intérieur du fichier .h ou .cpp d'une classe, "d'enregistrer" cette dernière en la passant en argument de la macro, c'est à dire ajouter à la std::map un std::function permettant de construire une instance de cette classe.
J'ai donc quelque chose du genre :
Code:
1 2 3 4 5 6 7 8
| #include "mere.h"
class Fille : public Mere
{
};
DECLARE_ENTRY( Fille ) |
Or je souhaiterais ajouter de telles classes et les enregistrer sans devoir modifier d'autres fichiers de mon projet.