Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1627 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] creer un objet avec une classe aleatoire ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] creer un objet avec une classe aleatoire ??

n°104966
papaolive
Posté le 26-02-2002 à 13:12:02  profilanswer
 

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.

mood
Publicité
Posté le 26-02-2002 à 13:12:02  profilanswer
 

n°104969
BENB
100% Lux.
Posté le 26-02-2002 à 13:15:39  profilanswer
 

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 ?

n°104971
papaolive
Posté le 26-02-2002 à 13:19:32  profilanswer
 

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.

n°104993
wpk
Posté le 26-02-2002 à 13:38:57  profilanswer
 

si ta classe mere c'est E,
 
 
E * objs[4];
 
objs[0]= new A();
objs[1]= new B();
...
 
objs[rand()%4]->quel_cout();

n°105032
papaolive
Posté le 26-02-2002 à 14:17:22  profilanswer
 

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 ?

n°105136
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 26-02-2002 à 17:09:02  profilanswer
 

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 :
  1. Humanoide* FactoryPJ::CreeNouvelHumanoide() {
  2. Humanoide* instance = NULL;
  3.     switch(unD4) {
  4.     case 0 : instance = new Nain();
  5.     //etc...
  6.     }
  7. // tu peux en profiter pour abonner l'instance à toute sorte
  8. // d'evennements
  9.     return instance;
  10. }


 
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...)


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°105145
LeGreg
Posté le 26-02-2002 à 17:20:01  profilanswer
 

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

n°105146
ArthurH
Posté le 26-02-2002 à 17:25:31  profilanswer
 

arghh !
Je pensais que ça allait être "simple" :o)
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 :o)
Merci

n°105165
LeGreg
Posté le 26-02-2002 à 17:49:35  profilanswer
 

j'ai un oeil par dessus ton epaule..
 
Mais tu peux te contenter de faire simple.
ce sont juste des suggestions.
 
A+
LEGREG

n°105168
papaolive
Posté le 26-02-2002 à 17:56:29  profilanswer
 

Je vais faire simple...
Je ne m'en sort pas avec factory


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] creer un objet avec une classe aleatoire ??

 

Sujets relatifs
[Delphi] Je cherche à créer des forms dynamiquement ...Utilisation de MFC , classe CInternet
Créer des Jeux afin de faire participer les visiteurs !!![Pop-up] aléatoire ?
creer un site web[Java ou C#] Objet de base thread safe??
C++; créer répertoireProg lancé au démarrage, il ne veut pas me créer un FILE stream ...
C++ : classe imbriquees...Créer un EXE d'un SWF et pouvoir l'ouvrir en plein écran
Plus de sujets relatifs à : [C++] creer un objet avec une classe aleatoire ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR