Récupérer un objet se trouvant dans une autre fonction
Bonjour, voilà mon problème. je m'entraîne avec les classes à faire un rpg en console. Mais je ne vois pas comment convertir l'objet de classe mère player en objet de la classe fille Guerrier via la fonction création, en sachant que le joueur aura le choix entre plusieurs classes. Merci d'avance :).
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <iostream>
#include <string>
#include "Personnages.h"
#include "Guerrier.h"
using namespace std;
Personnage Creation(Personnage &test);
int main()
{
Personnage player;
Creation(player);
//Afficher l'état du joueur via la class fille
player.Afficher();
cout<< endl;
system("pause");
return 0;
} |
Personne.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #ifndef PERSONNE
#define PERSONNE
class Personnage
{
public:
Personnage(){};
Personnage(std::string c_name);
virtual ~Personnage(){}
protected:
std::string nom;
int hp, mp;
};
#endif |
Guerrier.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #ifndef DEF_GUERRIER
#define DEF_GUERRIER
#include <string>
#include <iostream>
#include "Personnages.h"
class Guerrier : public Personnage
{
public:
Guerrier(){};
Guerrier(std::string c_name,int c_pv);
void Afficher();
~Guerrier(){};
};
#endif |
Fonction de création du personnage :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| Personnage Creation(Personnage &test)
{
bool validation = false;
int choix = 0;
string n_character;
cout << "######################################" << endl;
cout << " CREATION DU PERSONNAGE" << endl;
cout << "######################################" << endl << endl;
while(!validation)
{
cout << "Choisissez le nom de votre personnage : " << endl;
cin >> n_character;
cout << endl;
cout << "Choississez une classe :" << endl;
cout << "1 : Guerrier" << endl;
cout << "2 : Voleur" << endl;
cout << "3 : Magicien" << endl;
cin >> choix;
cout << endl;
switch(choix)
{
case 1:
{
cout << "Vous avez choisi la classe guerrier" << endl<< endl;
Guerrier guerrier(n_character, 20);
Guerrier &perso = guerrier;
try
{
Personnage &perso1 = dynamic_cast<Personnage&>(perso);
}
catch (const std::exception& e)
{
std::cerr << e.what() << endl;
}
test = guerrier;
validation = true;
break;
}
case 2:
{
cout << "Vous avez choisi la classe voleur" << endl;
break;
}
case 3:
{
cout << "Vous avez choisi la classe magicien" << endl;
break;
}
}
}
return test;
} |