Bonsoir,
Bon je ne suis pas sur que le titre correspond vraiment mais je ne sais pas trop comment définir mon problème :
En gros j'ai une classe joueur contenant ces champs public
Et voici les fonctions constructeur et affichage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int id; bool humain; int score; Joueur(int,bool); void affiche();
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 Joueur::Joueur(int i,bool h) { id = i; humain = h; score = 0; } void Joueur::affiche() { if (humain) cout<<"Joueur "; else cout<<"Ordinateur "; cout << id << endl << "- Score : "<< score << endl; }
une classe jeu contenant pour le moment ces champs, toujours publics
Et le voici son constructeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public:Joueur** joueurs; int nbjoueurs; Jeu(int,int);
Et voici mon problème : DAns le main lorque je défini un joueur dans le main puis que j'appelle la fonction affiche sur ce joueur ça fonctionne bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Jeu::Jeu(int nbhumains,int nbordi) { nbjoueurs=0; joueurs = new Joueur*[10]; for (int i=0;i<nbhumains;i++){ Joueur j = Joueur(nbjoueurs+1,true); joueurs[nbjoueurs] = &j;nbjoueurs++; }for (int i=0;i<nbordi;i++){ Joueur o = Joueur(nbjoueurs+1,false); joueurs[nbjoueurs] = &o;nbjoueurs++; }//ctor }
ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Joueur j = Joueur(1,true); j.affiche();Par contre si je crée un jeu puis que j'appelle la fonction affiche sur un des joueurs du jeu, l'affichage n'est pas celui attendu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Joueur 1 - Score : 0
ex :
donne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Jeu jeu = Jeu(2,2); jeu.joueurs[0]->affiche();
au lieu de 1 comme ca devrait l'être normalement. :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Joueur 954220448 - Score : 0
Sachant que le nombre "954220448" n'est pas fixe, et je ne vois vraiment pas d'où ça vient.
Une idée?
Merci.![]()
Partager