HERITAGE :Problème avec le démasquage d'une fonction
Résolu
toufeux
Messages postés
48
Statut
Membre
-
toufeux Messages postés 48 Statut Membre -
toufeux Messages postés 48 Statut Membre -
salut,
Je suis en train de faire un petit jeu de stratégie sur l'invite de commande windows,
Le jeu se joue contre un Bot donc je créait un Objet Personnage avec les fonction de base et la classe Joueur herité de Personnage. Le problème intervient lorsque du démasquage d'une fonction de la classe Personnage qui a un argument pas récupérer la valeur de retour de la fonction et le compilateur me dit que les variables de Personnage sont protéger alors que je les utilise avec l'objet Joueur.
et l'objet hérité de Personnage :
merci d'avance pour vos réponse :p
Je suis en train de faire un petit jeu de stratégie sur l'invite de commande windows,
Le jeu se joue contre un Bot donc je créait un Objet Personnage avec les fonction de base et la classe Joueur herité de Personnage. Le problème intervient lorsque du démasquage d'une fonction de la classe Personnage qui a un argument pas récupérer la valeur de retour de la fonction et le compilateur me dit que les variables de Personnage sont protéger alors que je les utilise avec l'objet Joueur.
class Personnage
{
public:
Personnage();
void moinsTroupe(int moins);
int attaquer(Personnage const& cible);
bool plusTroupe(int nombreTroupe, int prix);
void plusArgent();
int plusMine();
int desarmement();
int espionnage();
bool gagne();
protected:
int m_progression;
int m_troupe;
int m_troupeL;
int m_mineN;
int m_argent;
std::string m_nom;
std::string m_pays;
double m_redement;
};
et l'objet hérité de Personnage :
#include "Personnage.h"
class Joueur : public Personnage
{
public:
Joueur();
void selecteur();
void getNom();
void attaquer(Personnage const& cible);
void plusTroupe();
void plusMine();
void desarmement(Personnage const& cible);
void espionnage(Personnage const& cible);
};
void Joueur::desarmement(Personnage const& cible)
{
int *readDesarmement(0); readDesarmement =new int;
- readDesarmement =Personnage::desarmement(Personnage const& cible); switch(*readDesarmement) { case 0: std::cout<< "Vous n'avez pas assez d'argent"<< std::endl; getch(); break; case 1: std::cout<< "Votre conferance a echoue"<< std::endl; getch(); break; case 2: std::cout<< "Votre conferance a eu du succes"<< std::endl; getch(); break; } delete readDesarmement; readDesarmement =0;}
merci d'avance pour vos réponse :p
2 réponses
-
Salut,
Tu as considéré ton problème comme "résolu" : cependant afin de pouvoir l'afficher comme tel, donner la solution ne serait pas de trop, notamment "au cas où" d'autres seraient confronter à similaire. ;-)
Tu pourras ensuite user du bouton qui permettra de passer le problème en "résolu" ;-)
-
Bonjour,
J'ai des difficultés à comprendre ta dernière phrase. Relis là.
Ici des membres dePersonnage
sont indiqués "protected
", cela signifie que :- les fonctions de
Personnage
peuvent y accéder; - les fonctions de ses héritiers (
Joueurs
, etc) peuvent aussi y accéder; - le reste du monde, n'a aucune possibilité d'y accéder.
UnPersonnage
mieux conçu, les aurait indiqués "private
", et ainsi mêmeJoueur
ne devrait pas pouvoir y accéder. Seul moyen, utiliser des fonctions dePersonnage
qui elles seraient "public
" ou "protected
" et permettrait d'agir. Par exemple, une fonctionint argentRestant()const;
pourrait être "public
" car sans risque pour l'intégrité des données dePersonnnage
. - les fonctions de