Se connecter avec
S'enregistrer | Connectez-vous

Liste de class C++

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

Une liste de classes ? Ne serait-ce pas plutôt une liste d'instances de classe A ou B que tu souhaites ?

Sinon, pour faire propre, tu fais une classe de base Base. A hérite de Base, et B hérite de Base. Il te suffit alors de faire une liste de Base.

Merci d'avoir repondu :) 

J'avais fais ça mais je ne sais pas si sa correspond à ce que tu me disais.

En faisant stock-prod-stock-prod je n'est pas reussi a creer une fonction me permettant par exemple de savoir si la 2eme salle est verrouillé ou pas. En clair, je n'arrive pas a voir les membre lorceque la salle est dans la liste.


  1. //////////LISTE///////////////////////////:
  2.  
  3.  
  4. class liste{
  5.  
  6. friend class salle;
  7. friend class salle_prod;
  8. friend class salle_stock;
  9.  
  10. private:
  11.  
  12. int nb; // L'entier dans la liste
  13. liste *suivant;
  14.  
  15. //CONSTRUCTEUR
  16.  
  17.  
  18. liste();
  19. liste(int);
  20. liste(int , liste *);
  21.  
  22. };
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. /////////////SALLE BASE/////////////////////
  33.  
  34. class salle{
  35.  
  36. protected:
  37.  
  38. liste *tetee;
  39. liste *queuee;
  40.  
  41. public:
  42.  
  43. //CONSTRUCTEURS
  44.  
  45. salle();
  46.  
  47. // DESTRUCTEUR
  48.  
  49. virtual ~salle();
  50.  
  51. };
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. /////////////SALLE PRODUCTION////////////////
  60.  
  61. class salle_prod : public salle{
  62.  
  63. bool verrouille;
  64. bool plein;
  65. bool panne;
  66. int nb_salle;
  67.  
  68. public:
  69.  
  70. //CONSTRUCTEUR
  71.  
  72. salle_prod();
  73. salle_prod(bool, bool, bool);
  74. salle_prod(const salle_prod &);
  75.  
  76. // DESTRUCTEUR
  77.  
  78. virtual ~salle_prod();
  79.  
  80. //SURCHARGE OP
  81.  
  82. salle_prod &operator=(const salle_prod &);
  83.  
  84. // METHODES
  85.  
  86. void afficher();
  87. void set_verr(bool);
  88. void set_plein(bool);
  89.  
  90. // MÉTHODES DE MODIFICATION
  91.  
  92. // Toutes les méthodes d'ajout.
  93.  
  94. int ajouter_debut(bool);
  95.  
  96. int ajouter_fin(bool);
  97.  
  98. int ajouter_position(bool, int position);
  99.  
  100.  
  101.  
  102. // Toutes les méthodes de retrait.
  103.  
  104. void retirer_debut();
  105.  
  106. void retirer_fin();
  107.  
  108. void retirer_position(int position);
  109.  
  110. void vide(void); // Vide la liste.
  111.  
  112. // MÉTHODES DE CONSULTATION
  113.  
  114. int consulter_debut(int & valeur) const;
  115.  
  116. int consulter_fin(int & valeur) const;
  117.  
  118. int consulter_position(int position) const;
  119.  
  120.  
  121.  
  122. inline int est_vide(void) const {return nb_salle==0;}
  123.  
  124. inline int size(void) const { return nb_salle;}
  125. };
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133. /////////////SALLE STOCKAGE////////////////
  134.  
  135.  
  136.  
  137. class salle_stock : public salle{
  138.  
  139. bool verrouille;
  140. bool plein;
  141. bool panne;
  142. int nb_salle;
  143.  
  144. public:
  145.  
  146. //CONSTRUCTEUR
  147.  
  148. salle_stock();
  149. salle_stock(bool, bool, bool);
  150. salle_stock(const salle_stock &);
  151.  
  152. // DESTRUCTEUR
  153.  
  154. virtual ~salle_stock();
  155.  
  156. //SURCHARGE OP
  157.  
  158. salle_stock &operator=(const salle_stock &);
  159.  
  160.  
  161. // METHODES
  162.  
  163. void afficher();
  164. void set_verr(bool);
  165. void set_plein(bool);
  166.  
  167.  
  168.  
  169. // MÉTHODES DE MODIFICATION
  170.  
  171. // Toutes les méthodes d'ajout.
  172.  
  173. int ajouter_debut(bool);
  174.  
  175. int ajouter_fin(bool);
  176.  
  177. int ajouter_position(bool, int position);
  178.  
  179.  
  180.  
  181. // Toutes les méthodes de retrait.
  182.  
  183. void retirer_debut();
  184.  
  185. void retirer_fin();
  186.  
  187. void retirer_position(int position);
  188.  
  189. void vide(void); // Vide la liste.
  190.  
  191.  
  192.  
  193.  
  194.  
  195. // MÉTHODES DE CONSULTATION
  196.  
  197. int consulter_debut(int & valeur) const;
  198.  
  199. int consulter_fin(int & valeur) const;
  200.  
  201. int consulter_position(int position) const;
  202.  
  203.  
  204.  
  205. inline int est_vide(void) const {return nb_salle==0;}
  206.  
  207. inline int size(void) const { return nb_salle;}
  208. };
Expert Programmation

Déjà tu as des attributs communs avec les 2 classes (par exemple la var "verouille", méthode "EstVide()" etc.). Met ça dans la classe commune, et tu pourras accéder à ces informations sans savoir si la salle est stock ou prod.

J'avais seulement fait un copier coller de la classe salle_prod pour vous montrez à quoi ça ressemble.
Ce que je vous ai montré est un peu du meli melo. Donc je vais vous montrer ou j'en suis simplement.


  1. class Mother
  2. {
  3. public :
  4. Mother() {}
  5. virtual ~Mother() {}
  6.  
  7. virtual void doSomething() = 0;
  8. };
  9.  
  10. class A : public Mother
  11. {
  12. public:
  13. A() {}
  14.  
  15. virtual void doSomething() { std::cout << "Je suis A" << std::endl; }
  16. };
  17.  
  18. class B : public Mother
  19. {
  20. public:
  21. B() {}
  22.  
  23. virtual void doSomething() { std::cout << "Je suis B" << std::endl;}
  24. };




Voila les classes sont créent mais je ne sais pas comment faire pour faire une liste A-B-A-B
Je voudrais juste savoir ou mettre la classe list et savoir quel membre y sont necessaire. Faut il rajouter des membre aux classe A et B necessaire pour cette liste??

L'implémentation, je peus m'en charger
Expert Programmation

Pour faire une liste, tu peux avoir une classe Element qui représente un élement de la liste. Chaque élément contient un pointeur vers l'élement suivant et l'élément précédent. Chaque élément contient un pointeur vers une instance de classe Mother.
  1. E--E--E--E
  2. | | | |
  3. M M M M

où M est en fait soit A soit B.

  1. E--E--E--E
  2. | | | |
  3. A B A B

Lassé par la pub ? Créez un compte
Tom's guide dans le monde