Signaler

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

Posez votre question toufeux 42Messages postés vendredi 24 février 2017Date d'inscription 1 septembre 2017 Dernière intervention - Dernière réponse le 1 sept. 2017 à 11:50 par toufeux
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
Utile
+0
plus moins
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 42Messages postés vendredi 24 février 2017Date d'inscription 1 septembre 2017 Dernière intervention - 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
Répondre
Donnez votre avis
Utile
+0
plus moins
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
.
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !