C++ problème de pointeur sur classe
Laaris
-
Laaris -
Laaris -
Bonjour,
Je dois programmer un puissance 4 en C++, avec deux mode de jeu: deux joueurs ou un joueur contre l'ordinateur.
J'ai donc une classe joueur avec deux attributs nom et symbole, dont héritent deux sous classes: humain et cpu.
Au début de mon programme, après avoir demandé à l'utilisateur quel type de partie il veut faire, je crée mes instances en fonction de sa réponse:
joueur* joueur_courant;
joueur* adversaire;
joueur* temp
humain joueur1 (nom,symbole);
joueur_courant=&joueur1;
if (typepartie==1) { // si c'est une partie solo
cpu ordinateur("l'ordinateur",symbole);
adversaire=&ordinateur;
// quand je teste adversaire->nom ici, il me retourne le nom que je lui ai donné
}
else {
humain joueur2(nom,symbole);
adversaire=&joueur2;
// quand je teste adversaire->nom ici, il me retourne "l'ordinateur"
}
Mais quand je teste adversaire->nom après être sorti du if, il ne me retourne rien.
Par contre, si je teste adversaire->symbole, ça fonctionne partout. (???)
Ensuite quand je change de joueur, je fais:
temp=joueur_courant;
joueur_courant=adversaire;
adversaire=temp;
Et bien sûr ça ne fonctionne pas vu que visiblement le pointeur adversaire a perdu l'adresse qu'il contenait en sortant du if.
Alors deux choses m'intriguent:
- adversaire perd-il son contenu en sortant du if?
- si ce n'est pas le cas, pourquoi ne renvoie-t-il pas adversaire->nom ?
- si c'est le cas, pourquoi renvoie-t-il correctement adversaire->symbole?
Je dois programmer un puissance 4 en C++, avec deux mode de jeu: deux joueurs ou un joueur contre l'ordinateur.
J'ai donc une classe joueur avec deux attributs nom et symbole, dont héritent deux sous classes: humain et cpu.
Au début de mon programme, après avoir demandé à l'utilisateur quel type de partie il veut faire, je crée mes instances en fonction de sa réponse:
joueur* joueur_courant;
joueur* adversaire;
joueur* temp
humain joueur1 (nom,symbole);
joueur_courant=&joueur1;
if (typepartie==1) { // si c'est une partie solo
cpu ordinateur("l'ordinateur",symbole);
adversaire=&ordinateur;
// quand je teste adversaire->nom ici, il me retourne le nom que je lui ai donné
}
else {
humain joueur2(nom,symbole);
adversaire=&joueur2;
// quand je teste adversaire->nom ici, il me retourne "l'ordinateur"
}
Mais quand je teste adversaire->nom après être sorti du if, il ne me retourne rien.
Par contre, si je teste adversaire->symbole, ça fonctionne partout. (???)
Ensuite quand je change de joueur, je fais:
temp=joueur_courant;
joueur_courant=adversaire;
adversaire=temp;
Et bien sûr ça ne fonctionne pas vu que visiblement le pointeur adversaire a perdu l'adresse qu'il contenait en sortant du if.
Alors deux choses m'intriguent:
- adversaire perd-il son contenu en sortant du if?
- si ce n'est pas le cas, pourquoi ne renvoie-t-il pas adversaire->nom ?
- si c'est le cas, pourquoi renvoie-t-il correctement adversaire->symbole?
A voir également:
- C++ problème de pointeur sur classe
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Logiciel de classement de photos gratuit - Guide
- Classe ram - Guide
- Logiciel de classement de documents gratuit - Télécharger - Bureautique