creer un objet avec une classe aleatoire ?? [C++] - Programmation
Marsh Posté le 26-02-2002 à 13:15:39
Ben il faut que les quatre classes derivent d'une classe commune.... et tu renvoies un pointeur/une reference sur la clmasse de base...
Quel est le but ?
Marsh Posté le 26-02-2002 à 13:19:32
J'ai créer un classe generale et 4 classes qui en herite.
C'est un programme fenetre DOS, qui cré aleatoirement un personnage. Le fait de rendre la classe "tiré" aleatoire me permet de creer une race aleatoire.
Marsh Posté le 26-02-2002 à 13:38:57
si ta classe mere c'est E,
E * objs[4];
objs[0]= new A();
objs[1]= new B();
...
objs[rand()%4]->quel_cout();
Marsh Posté le 26-02-2002 à 14:17:22
Voici mon main();
void main(void){
init();
nain o1;
cout<<"Nom: ";
o1.quel_prenom();
o1.quel_nom1();
o1.quel_nom2();
cout<<endl<<"Race: ";
o1.quelle_race();
cout<<endl<<"Classe: ";
o1.quel_metier();
cout<<endl<<"Age: ";
o1.quel_age();
cout<<"Taille: ";
o1.quelle_taille();
cout<<endl<<"\n== caracteristiques ==\n"<<endl;
o1.quelle_FOR();
o1.quelle_DEX();
o1.quelle_INT();
o1.quelle_CON();
o1.quelle_SAG();
o1.quelle_CHA();
cout<<endl;
};
el les classes.
class humanoide:public carac {
public:
virtual void quel_nom2();
virtual void quel_nom1();
virtual void quel_prenom();
virtual void quel_age();
virtual void quelle_race();
virtual void quelle_taille();
virtual void quel_metier();
};
class nain:public humanoide {
public:
virtual void quelle_taille();
virtual void quel_age();
virtual void quelle_FOR();
virtual void quelle_SAG();
virtual void quelle_race() const {cout<<"Nain";};
virtual void quel_metier();
};
class hobbit:public humanoide {
public:
virtual void quelle_taille();
virtual void quel_age();
virtual void quelle_FOR();
virtual void quelle_race() const {cout<<"Hobbit";};
virtual void quel_metier();
};
les autres classes sont du même ordre.
Que dois je mettre dans le main à la plce de nain o1; pour que la classe appelé soit aleatoire ?
Marsh Posté le 26-02-2002 à 17:09:02
Perso, j'aurais fait une factory qui renvoie une reference du type de la classe mère (humanoide) vers une instance d'une des 4 classes (nain, hobbit etc...).
La factory est un singleton avec une méthode du style
Code :
|
Il y a peut etre une autre méthode mais celle ci permet de découpler les classes (le hobbit n'a pas à connaitre le nain etc...)
Marsh Posté le 26-02-2002 à 17:20:01
et il faudrait un mecanisme d'enregistrement
des classes
pour que la classe factory n'ait pas a connaitre
qu'il y a une classe orc qui derive
de "gobelinoide".
Zut, ca va etre chaud a faire en C++..
A+
LEGREG
Marsh Posté le 26-02-2002 à 17:25:31
arghh !
Je pensais que ça allait être "simple" )
Bon, je vais voir ce que je peut faire avec une factory...
LEGREG lis dans mon code ou quoi ?
Bien sur que Gobelinoide va se radiner )
Merci
Marsh Posté le 26-02-2002 à 17:49:35
j'ai un oeil par dessus ton epaule..
Mais tu peux te contenter de faire simple.
ce sont juste des suggestions.
A+
LEGREG
Marsh Posté le 26-02-2002 à 13:12:02
Bonjour,
j'ai ecrit un programme où il y 4 classes.
On va dire A B C et D.
Dans mon main() je crée un objet en faisant : A o1; ou encore B o1
(avec o1 pour objet1)
Ensuite je fait tout un tas d'appel a des fonctions membres:
o1.quel_cout() par exemple.
J'aimerais que la creation de l'objet se fasse avec une des quatres classes
mais aleatoirement.
Peut être avec un pointeur ?
Pouvez vous m'aider ? Merci d'avance pour vos reponses.