Se connecter / S'enregistrer
Votre question

Liste de class C++

Tags :
  • Copier coller
  • Programmation
Dernière réponse : dans Programmation
19 Septembre 2007 20:58:56

Bonjour, j'aimerai faire une liste de class.

C'est à dire creer 2 class (class A, et class B)
Puis faire une liste A-B-A-B-A-B-A....

J'ai bô chercher, je ne trouve pas :s
Quelqun pourrais m'aider s'il vous plais?

Autres pages sur : liste class

a b L Programmation
19 Septembre 2007 21:24:18

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.
19 Septembre 2007 21:47:35

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. };
Contenus similaires
19 Septembre 2007 22:15:12

c'est pas très clair...
si tu veux utiliser les listes chainés avec pointeur, il te faut 3 classe:
"base" qui représentera un element de ta liste avec un attribut suivant.
"base" contiendra des fonctions virtuelles qui seront redéfinies dans les classes filles A et B.

mais si tu utilises le C++, autant utiliser la librairie STL et plus particulierement la classe std::list
http://cpp.developpez.com/cours/stl/#LIII-B-1-b
19 Septembre 2007 22:40:38

Ok je vous remercie, je vais y reflechir.

Concernant la lib STL, on peut pas c'est pour un projet ^^
20 Septembre 2007 14:43:11

J'ai essayé mais je n'y arrive pas :s
Pourriez vous, si ça ne vous dérange pas de me montrer comment faire.
Seulement le fichier.h simple avec les prototypes principaux apres je me debrouillerai a implémenter et à rajouter les fonction et méthodes du dessu.




a b L Programmation
20 Septembre 2007 21:33:14

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.
20 Septembre 2007 22:39:51

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
a b L Programmation
22 Septembre 2007 11:48:06

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

22 Septembre 2007 12:41:05

ok merci je ne voyais pas ça du tout comme ça :) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS