Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme) { m_arme.changer(nomNouvelleArme, degatsNouvelleArme); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme) { m_arme.changer(nomNouvelleArme, degatsNouvelleArme); }
Cette méthode ne définit rien, elle appelle Arme::changer(std::string, int).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Je crois que l'appelation se fait dans le main et de la forme objet.méthode;
Tu t'embrouilles un petit peu .
Tu dois comprendre que dans ton exemple que la classe Personne possède un attribut Arme (qui est aussi une classe). Lorsque tu fais :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 goliath.changerArme("Double hache tranchante vénéneuse de la mort", 40);
en fait tu réalises l'action suivante : goliath.m_arme.changer("Double hache tranchante vénéneuse de la mort", 40);. chargerArme n'est rien de plus qu'un "pont" entre le personnage et son arme.
De plus, il faut bien différencier "changerArme" et "changer". Les deux sont des méthodes mais elles n'appartiennent pas à la même classe.
Si l'on reprend ton exemple tu as deux classes + ton main et tu as :
main possède les personnages
les personnages possèdent en privé des armes
main ne connait pas l’existence des armes
A partir de ce constat le seul moyen que tu as pour permettre à main d’interagir avec Arme est d'utiliser Personnage comme intermédiaire et c'est exactement ce qui se passe ici.
Merci je comprends tout maintenant.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager