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
Mot.cpp
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
Chaque mot contient un vecteur de tentatives (que j'affiche ainsi dans la grille de mots).
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; }
Je reviens donc à ma fonction jeu() de ma classe Partie. Voici ce que je fais dans cette fonction :
Et dans ma fonction jouerMot() :
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]); }
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 ?
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; }
Partager