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

  1. Judge_DT Messages postés 27651 Date d'inscription   Statut Modérateur Dernière intervention   10 013
     
    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" ;-)
    0
    1. toufeux Messages postés 48 Statut Membre
       
      Je comprend mais en faite c'était tout c*n, les déclaration dans
      Personnage.h
      était différente de
      Personnage.cpp
      0
  2. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    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
    .
    0