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

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();
Et voici les fonctions constructeur et affichage
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
public:Joueur** joueurs;
        int nbjoueurs;
        Jeu(int,int);
Et le voici son constructeur

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
}
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

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

ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Jeu jeu = Jeu(2,2);
jeu.joueurs[0]->affiche();
donne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Joueur 954220448
- Score : 0
au lieu de 1 comme ca devrait l'être normalement. :/
Sachant que le nombre "954220448" n'est pas fixe, et je ne vois vraiment pas d'où ça vient.



Une idée?

Merci.