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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.