HERITAGE :Problème avec le démasquage d'une fonction

Résolu/Fermé
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017 - 31 août 2017 à 13:03
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017 - 1 sept. 2017 à 11:50
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.

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

Judge_DT Messages postés 29395 Date d'inscription vendredi 5 février 2010 Statut Modérateur Dernière intervention 23 octobre 2021 9 639
31 août 2017 à 23:20
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" ;-)
toufeux Messages postés 43 Date d'inscription vendredi 24 février 2017 Statut Membre Dernière intervention 28 novembre 2017
1 sept. 2017 à 11:50
Je comprend mais en faite c'était tout c*n, les déclaration dans
Personnage.h
était différente de
Personnage.cpp
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
1 sept. 2017 à 08:16
Bonjour,

J'ai des difficultés à comprendre ta dernière phrase. Relis là.

Ici des membres de
Personnage
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.

Un
Personnage
mieux conçu, les aurait indiqués "
private
", et ainsi même
Joueur
ne devrait pas pouvoir y accéder. Seul moyen, utiliser des fonctions de
Personnage
qui elles seraient "
public
" ou "
protected
" et permettrait d'agir. Par exemple, une fonction
int argentRestant()const;
pourrait être "
public
" car sans risque pour l'intégrité des données de
Personnnage
.