Bonjour à tous

Mon cerveau est en train d'exploser à cause de ce problème ^^

J'ai une classe Rule dont voici les attributs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
class Rule
{
    std::vector<std::string> m_answers;
    std::vector<int> m_numAnswers;
    std::vector<int> m_answersType;
    std::vector<std::string> m_involvedWords;
    int m_numCombination;
    std::map<std::vector<std::string>, Rule*> m_followingRules;  // C'est celui-là qui nous intéresse
    int m_lineNumber;
    Rule* m_motherRule;
}
Cette classe a plusieurs méthodes, dont deux très similaires :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
void Rule::addFollowingRule(Rule* newFollowingRule) // Ajoute une followingRule
{
    m_followingRules.insert(make_pair(newFollowingRule->getInvolvedWords(), newFollowingRule));
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
bool Rule::changeFollowingRule(Rule* newRule) // Remplace une followingRule existante
{
    vector<string> keywords = newRule->getInvolvedWords();
    Rule* precedentRule = m_followingRules[keywords];
    m_followingRules[keywords] = newRule;
    delete precedentRule;
    return 1;
}
Dans la fonction qui les utilise, on a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
if(replacement)
    {
        ok = motherRule->changeFollowingRule(newRule);
        if(!ok) return 0;
    }
else motherRule->addFollowingRule(newRule);
Le code se compile sans erreur ni warning.
Dans le cas où replacement = 0, on exécute addFollowingRule sur motherRule, tout vas bien, sans problème. Dans le cas où replacement = 1, quelque soit la manipulation de m_followingRules que je fais dedans, j'ai un segmentation fault.
Même si je change ma fonction pour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
bool Rule::changeFollowingRule(Rule* newRule) // Remplace une followingRule existante
{
    int a = m_followingRules.size();
    return 1;
}
Je ne comprends vraiment pas ce qui se passe, il n'y a pas du tout de problèmes dans les autres méthodes de la classe Rule. C'est sûrement un truc très bête mais je n'arrive pas à le voir. Merci d'avance pour votre aide !