Bonjour à tous.

Voilà, plusieurs années de Java ont eu raison de mes aptitudes en pointeurs en C/C++.
Je suis actuellement en train de créer un Motus en console (je le porterai peut-être plus tard sur SDL si nécessaire), et j'ai le problème suivant :

Mon main appelle la fonction jeu() de ma classe Partie. Comme je souhaite qu'une partie finisse après avoir joué 10 mots, j'ai créé un tableau de 10 Mot, voici ce qui nous intéresse dans la classe Mot :

Mot.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
class Mot
{
    private :
        std::vector<std::string> tentatives;
    public :
        void ajouterTentative(std::string tentative);
        std::vector<std::string> getTentatives();
};
 
#endif
Mot.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void Mot::ajouterTentative(std::string tentative)
{
    tentatives.push_back(tentative);
}
 
std::vector<std::string> Mot::getTentatives()
{
    return tentatives;
}
Chaque mot contient un vecteur de tentatives (que j'affiche ainsi dans la grille de mots).
Je reviens donc à ma fonction jeu() de ma classe Partie. Voici ce que je fais dans cette fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
int nbMotsJoues = 0;
Mot mots[10];
 
while(nbMotsJoues < 10)
{
   jouerMot(&mots[nbMotsJoues]);
}
Et dans ma fonction jouerMot() :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void jouerMot(Mot * mot)
{
    Mot motActuel = *mot;
    string motTente;
    // L'utilisateur rentre le mot qu'il souhaite
    motActuel.ajouterTentative(motTente);
    /** Le problème est là ! **/
    cout << motActuel.getTentatives().size() << endl;
}
Le problème est ici : à chaque mot tenté, size() de mon vecteur vaut 1. En fait, il ne contient que la valeur que je lui ai affectée dans la fonction et pas les anciennes. Je suppose donc un problème d'adressage mais que faire ?