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
Personne.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Guerrier.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Fonction de création du personnage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Partager