Bonjour/soir

Je voudrais faire une fonction qui demande le nom d'un element d'une std::list et qui supprime cet element.
J'ai donc fais ceci: La fonction supprimeVin() appel la fonction supprime(), qui se sert de analyseNom().

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
 
void ListeVins::supprimeVin()
{
    std::cout << "Entrez le nom du vin a supprimer" << '\n';
    std::string leNom;
    std::cin >> leNom;
 
     supprime(leNom);
 
    std::list<Vin>::iterator iter;
    std::ofstream uneListeVins("list.txt");
    uneListeVins << sesVins.size() << '\n';
    uneListeVins << '\n';
 
    for(iter=sesVins.begin(); iter!=sesVins.end(); iter++)
    {
        toStringF(uneListeVins,(*iter));
    }
 
    std::cout << "Vin " << leNom << " supprime" <<'\n';
    return;
 
}
 
 
 
void ListeVins::supprime(std::string nom)
{
    std::list<Vin>::iterator ite;
    for(ite=sesVins.begin(); ite!= sesVins.end(); ite++)
                {
                    if( analyseNom(*ite,nom))
                    sesVins.erase(ite);
                }
    return;
}
 
 
 
bool ListeVins::analyseNom(Vin v,std::string & nom)
{
    bool reponse;
 
    if( v.getLeNom()==nom)
    reponse=true;
 
    else reponse=false;
 
    return reponse;
}
Ca compile mais ça marche pas. J'ai beau chercher je ne trouve pas pourquoi.
J'ai testé de rajouter des std::cout à différents endroits, et apparemment le bug arrive apres la fonction erase() dans la boucle for.

Voilà, merci de votre aide.