[debutant] Un constructeur qui appel un autre constructeur tout seul

Le
Beware
Je débute dans l'apprentissage du C++ en suivant notamment les cours
du site du zero.
Ils donnent l'exemple pour apprendre a utiliser les classes un trés
simple rpg à 2 joueurs.

Pour m'amuser un peu et pour m'entrainer j'ai un peu modifié le code
mais j'ai un souci.

Je m'explique:

J'ai une classe personnage qui me permet de gerer mes joueurs. Le
constructeur de cette classe lance deux fonctions pour donner un nom
et choisir une arme.

J'ai une autre classe Combat qui me sert à gerer le combat (tour du
joueur, etc.) et son constructeur n'est qu'une liste d'initialisation.

Dans mon main je crée deux objets combat et joueur1 et joueur2 et
JUSTE ca. Voyez:

main.ccp :
[CODE]
#include <iostream>
#include <string>

#include "Personnage.h"
#include "Combat.h"

using namespace std;


int main()
{
// On démarre le jeu
Combat combat1;

// On créé les deux personnages joueur1 et joueur2
Personnage joueur1, joueur2;
cout << "lol" << endl;

return 0;
[/CODE]

Personnage.cpp:
[CODE]
#include <iostream>
#include <string>
#include <limits>
#include "Personnage.h"
#include "Arme.h"

using namespace std;

// Constructeur
Personnage::Personnage() : m_vie(100), m_mana(100), m_nbPotion(3)
{
donnerNom();
donnerArme();
}

// Methodes

// Définir le nom et l'arme du personnage
void Personnage::donnerNom()
{
cout << "Quel est le nom du joueur ?" << endl;
cin >> m_nom;
}


void Personnage::donnerArme()
{
int choixArme;

cout << "Quel arme choisissez-vous ?" << endl;
cout << "1 - La lance (dégats : 18 pts)" << endl;
cout << "2 - L'epée en bronze (dégats : 19 pts)" << endl;
cout << "3 - La hache de fer (dégats : 20 pts)" << endl;
cout << "Votre choix : ";
cin >> choixArme;
}
[/CODE]

Personnage.h :
[CODE]
#ifndef DEF_PERSONNAGE
#define DEF_PERSONNAGE

#include <string>
#include "Arme.h"

class Personnage
{
public:

// Constructeur
Personnage();
// Methodes
// Definir le personnage : Nom + Arme
void donnerNom();
void donnerArme();

private:

std::string m_nom;
int m_vie;
int m_mana;
int m_nbPotion;
Arme m_arme;

};

#endif
[/CODE]

et enfin combat.cpp :
[CODE]
#include <iostream>
#include <limits>
#include "Combat.h"
#include "Personnage.h"

using namespace std;

//Constructeur
Combat::Combat()
{

}
[/CODE]

Oups j'avais oublié le combat.h
[CODE]
#ifndef DEF_COMBAT
#define DEF_COMBAT

#include "Personnage.h"

class Combat
{
public:

// Constructeur
Combat();

};


#endif
[/CODE]


Le problème est que bien que le main doit crée deux objets joueur1 et
joueur2 , quand j'execute mon programme la création d'un joueur (nom +
arme) s'effectue 3 fois. En essayant de trouve le probléme, je me suis
rendu compte que la ligne Combat combat1 lancé le constructeur de la
classe Combat mais ce dernier lancé tout seul le constructeur de la
classe Personnage.

Je reste bloqué sur cette erreur sans comprendre ce que j'ai mal codé.
Merci de votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Beware
Le #19810451
Bonjour,

bon, j'ai un peu avancé grace à un réponse sur le forum de
developpez.com

J'ai retiré les interfaces dans le constructeur de Personnage et le
probléme semble résolu.
Publicité
Poster une réponse
Anonyme