declaration de Liste d'objet

declaration de Liste d'objet - C++ - Programmation

Marsh Posté le 04-01-2003 à 18:51:18    


Code :
  1. #include <iostream.h>
  2. #include <list>
  3. #include <algorithm>
  4. class baton
  5. {
  6. private :
  7.       char orientation;
  8.       std :: list<float>  coordx, coordy;
  9.       std :: list<baton>  coord;
  10. (....)
  11. };


 
voila un bout de code, j'ai voulu tenté la declaration d'une liste vide, pour l'instant, d'objet baton...
Mais cela n'a pas l'air de fonctionner, j'ai 3 erreur :
 
Info :Compiling E:\tetris\carre.cpp
Error:  list.h(93,33):Undefined structure 'baton'
Error:  list.h(93,33):Size of 'data' is unknown or zero
Error:  list.h(93,33):Undefined structure 'baton'
 
ces 3 erreurs pointent vers le fichier list au meme endroit :
 

Code :
  1. struct list_node
  2.     {
  3.         void_pointer next;
  4.         void_pointer prev;
  5.         T            data;
  6.     };


je pensais que c'etait pas bien compliquer, cela a bien fonctionner en forcant la list en int, ms des que je la force a utiliser mon objet, pas moyen...
J'ai pourtant bien verifier ds mon bouquin ms y a pas trop de detail sur les conteneurs sequentiels pour les objets maisons ..

Reply

Marsh Posté le 04-01-2003 à 18:51:18   

Reply

Marsh Posté le 04-01-2003 à 19:10:24    

weed a écrit :


Code :
  1. #include <iostream.h>
  2. #include <list>
  3. #include <algorithm>
  4. class baton
  5. {
  6. private :
  7.       char orientation;
  8.       std :: list<float>  coordx, coordy;
  9.       std :: list<baton>  coord;
  10. (....)
  11. };




 
essaye de mettre une std::list<baton*> ça devrait mieux passer, parce que là c'est un peu trop récursif comme définition de type

Reply

Marsh Posté le 04-01-2003 à 19:25:28    

la t'as aucune chance avec une telle définition  :heink:


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 04-01-2003 à 19:54:43    

et puisqu'on y est, pas besoin non plus de .h pour iostream
 
ton problème, c'est que t'as définition est recursive, du genre "un baton, c'est une liste de baton". impossible à resoudre. parcontre "un baton, c'est une liste de référence/pointeur à d'autre baton", ça ça a du sens

Reply

Marsh Posté le 04-01-2003 à 20:18:33    

++Taz a écrit :

et puisqu'on y est, pas besoin non plus de .h pour iostream
 
ton problème, c'est que t'as définition est recursive, du genre "un baton, c'est une liste de baton". impossible à resoudre. parcontre "un baton, c'est une liste de référence/pointeur à d'autre baton", ça ça a du sens


 
le paradoxe de russel : existe - t il un ensemble de tous les ensembles ?


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Marsh Posté le 04-01-2003 à 20:22:41    

commence pas, y a plein d'histoire a propos des ensembles, des sous-ensembles et des partitions. c'est de la prise de tete devant tableau noir de sodomite de matheux. Ca vaut pas un bon frag  :D

Reply

Marsh Posté le 29-07-2008 à 11:05:27    

Citation :

parcontre "un baton, c'est une liste de référence/pointeur à d'autre baton", ça ça a du sens


 
 
Avez vous un support de cours qui parle de cette façon la de programmer ... en effet, j'ai un objet qui pointe vers une liste d'autres objets .... Mais je n'ai pas une très grande idée pour le moment de la façon de procéder ... je débute ts juste en orientée objet.
 
je vous remercie de votre aide
 
PS: j'ai des notions en programmartion et en algorithmique donc ne vous inkiétez pas je comprendrai si y a du code

Reply

Marsh Posté le 29-07-2008 à 12:28:42    

c'est pas de l'objet, c'est juste des pointeurs, des structure auto-référentielles. C'est quoi ta question ?

Reply

Marsh Posté le 29-07-2008 à 16:04:53    

ben en fait,  
j'ai une classe MaClasse qui a comme attribut une liste d'objets pointant vers elle.
 
Ex : classe personne continent la liste de tous les hommes car on suppose qu'on a trois classe classe personne, classe hommes, classse femmes, et la classe personne contient la liste de ts les hommes et la liste de toutes les femmes !!!!
 
Merci.

Reply

Marsh Posté le 29-07-2008 à 18:06:06    

wow paye ton schéma objet foireux.
Homme et Femme héritent de Personne OK, mais c'est pas à Personne de contenir toutes les hommes & femmes, ais à une classe supplémentaire qui encapsule un conteneur de Personne*.

Reply

Marsh Posté le 29-07-2008 à 18:06:06   

Reply

Marsh Posté le 29-07-2008 à 20:01:54    

Femme enceinte, toussa

Reply

Marsh Posté le 29-07-2008 à 22:58:57    

lol la blague

Reply

Marsh Posté le 30-07-2008 à 08:22:47    

Bon d'accord l'exemple n'était peu être pas si bien choisi que ça ... mais il ne s'agit pas là d'une classe personne, homme et femme, et puis j'ai le droit de faire ce que je veux avec mes classes non ???
 
moi ce que je recherche c'est juste a comment déclarer une liste d'objets comme étant un attribut de la classe, cette liste d'objets provient ( relation de composition) d'une autre classe Objet ..si comme si je voulais avoir la liste de tous les hommes comme attribut dans ma classe Personne... Je ne sais pas si c un peu clair ! je ne suis pas trés familère avec l'orientée objet ...... Je vous remercie encore !

Reply

Marsh Posté le 30-07-2008 à 08:47:20    

* Il y a une serie de choses qui ne sont pas possibles avec des types incomplets comme le sont les classes qui ont ete declarees et pas encore definies ou les classes en cours de definition.  Par exemple, il n'est pas possible de les utiliser pour les types de membre (c'est normal qu'une class Foo ne puisse pas avoir un membre de type Foo).
 
* Les conteneurs de la SL ne peuvent pas etre instancies avec des types incomplets.  Donc tu ne peux pas avoir une class Foo qui a pour membre list<Foo> car la classe n'est pas encore definie a ce moment la.  Si tu veux une liste de Foo comme membre de Foo, il va te falloir definir ta propre liste qui n'a pas cette contrainte.
 
* Si tu veux utiliser le polymorphisme d'inclusion (autrement dit pouvoir manipuler des instances de classes derivees comme ayant le type d'une de leurs classes de base), il faut passer par des pointeurs ou des references.  Donc definir ta propre liste qui n'exige pas un type complet n'est pas une solution.  Comme on ne peut pas instancier les conteneurs de la SL sur des references, tout ce que tu peux avoir comme membre de la class Foo, c'est std::list<Foo*> ou une liste de ta composition qui peut etre instanciee sur des Foo&.
 
* Si tu as a poser ce genre de question, je crains que definir tes propres listes ne soit pas immediatement possible.

Reply

Marsh Posté le 30-07-2008 à 10:27:56    

mathematica a écrit :

..si comme si je voulais avoir la liste de tous les hommes comme attribut dans ma classe Personne... Je ne sais pas si c un peu clair ! je ne suis pas trés familère avec l'orientée objet ...... Je vous remercie encore !


Ce que tu veux faire ne correspond pas a ce que tu essaye de faire.
Tu veux une classe contenant une liste d'élément de cette classe, mais quand tu donnes des exemples, tu veux une classe Personne qui contient une liste d'Homme. Tu utilises toi même 2 mots clairement différents, pourquoi ne pas mettre ça en pratique et donc faire deux classes : une définissant ton objet, et une autre classe conteneur de ta première !?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 30-07-2008 à 12:51:14    

Citation :

Ce que tu veux faire ne correspond pas a ce que tu essaye de faire.  


 
 
Hummmm   :pt1cable:  
 
 
c'est presque ça kao98, je veux une classe qui contient une liste d'éléments d'une autre classe.
 
j'ai une classe Projet (c la classe qui porte mon projet) qui pointe vers (relation de composition) vers une autre classe Personne (par example) et je veux que mon projet contient une liste de ts les objets personne.
 
 
ESt ce que je suis clair ou est ce que c parce que je suis débutante que je n'utilise pas les bons termes !!!!!!

Reply

Marsh Posté le 30-07-2008 à 16:53:40    

en vite fait, tu veux un truc qui ressemble à çà ?
 

Code :
  1. class CElement
  2. {
  3. ...
  4. private:
  5.   long m_lUnMembreQuelconque;
  6. };
  7. class CEnsemble
  8. {
  9. ...
  10. private:
  11. std::list<CElement>   m_ListOfElements;
  12. std::list<CElement*> m_ListOfElementsUsingPointers;
  13. };


 
tu peux include des listes d'éléments, des tableaux d'élements, des éléments, des pointeurs vers des éléments, tout ce que tu veux ou presque dans la classe CEnsemble, mais évidemment un Ensemble ne peut PAS contenir d'autres ensembles, il peut par contre contenir des pointeurs vers d'autres ensembles, exemple :
 

Code :
  1. class CEnsemble
  2. {
  3. ...
  4. private:
  5.   ...
  6. std::list<CEnsemble*> m_SousEnsembles;
  7. };


Message édité par Malkav le 30-07-2008 à 17:00:41
Reply

Marsh Posté le 30-07-2008 à 23:13:21    

C'est bon tous ces C

Reply

Marsh Posté le 31-07-2008 à 11:27:41    

Taz a écrit :

C'est bon tous ces C


hu ?
si c'est pour mes noms de classe, c'est l'influence des règles de codage de ma boîte  :o

Message cité 1 fois
Message édité par Malkav le 31-07-2008 à 11:28:22
Reply

Marsh Posté le 31-07-2008 à 11:37:03    

Malkav a écrit :


hu ?
si c'est pour mes noms de classe, c'est l'influence des règles de codage de ma boîte  :o


 
change de boite :o

Reply

Marsh Posté le 31-07-2008 à 13:25:54    

oui Malkav, ton premier code est celui que je cherche a faire .... en Gros il s'agit donc d'une liste chainée où chaque élément de la liste pointe vers le suivant.

Reply

Marsh Posté le 31-07-2008 à 13:46:46    

std::list c'est effectivement une ... liste, doublement chaînée puisque tu peux progresser dans les deux directions.A moins que tu ne veuilles recoder une liste chaînée de tes éléments?
 
Joel : ben quoi que j'appelle mes classes CBidule çà change pas grand chose :p


Message édité par Malkav le 31-07-2008 à 13:47:18
Reply

Marsh Posté le 31-07-2008 à 15:56:30    

recoder une liste chainée de mes éléments ????????

Reply

Marsh Posté le 31-07-2008 à 19:12:08    

mathematica a écrit :


Bon d'accord l'exemple n'était peu être pas si bien choisi que ça ... mais il ne s'agit pas là d'une classe personne, homme et femme, et puis j'ai le droit de faire ce que je veux avec mes classes non ???


 
non, sauf si t'aime écrire du code de merde.
La POO c'est pas du tirage aléatoire et du petit bonheur la chance. Faut réfléchir 2s aux concepts que tu essaye de modéliser :/

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed