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

  FORUM HardWare.fr
  Programmation
  C++

  pb de classe qui contient un pointeur vers une autre et inversement...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb de classe qui contient un pointeur vers une autre et inversement...

n°512068
blackgodde​ss
vive le troll !
Posté le 10-09-2003 à 22:44:04  profilanswer
 

Code :
  1. #define TabString List<string>
  2. class Channel
  3. {
  4. string _modes;
  5. string _topic;
  6. TabString _banlist;
  7. List<UserRight*> _users;
  8. };
  9. class User
  10. {
  11. string _nick;
  12. string _maskname;
  13. string _maskhost;
  14. string _modes;
  15. bool _admin;
  16. List<UserRight*> _channels;
  17. };
  18. class UserRight
  19. {
  20. unsigned char Level;
  21. Channel* Chan;
  22. User* User;
  23. };


 
List<T> est un template qui permet de faire une liste de type T que j'ai codé (vu que j'ai pas encore compris le principe de la stl)
 
Y a-t-il une possibilité pour que je m'en sorte ?
 
cela représente le contenu d'un serveur irc : plusieurs canaux (Channel) et plusieurs utilisateurs (User). Un utilisateur est relié à un canal par les droits qu'il a dessus.


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 10-09-2003 à 22:44:04  profilanswer
 

n°512079
Joel F
Real men use unique_ptr
Posté le 10-09-2003 à 22:52:33  profilanswer
 

Les typedef c pas fait pour les chiens :o
les forward declaration aussi :o
 

Code :
  1. class UserRight;
  2. typedef List<string>  TabString;
  3. class Channel
  4. {
  5. string _modes;
  6. string _topic;
  7. TabString _banlist;
  8. List<UserRight*> _users;
  9. };
  10. class User
  11. {
  12. string _nick;
  13. string _maskname;
  14. string _maskhost;
  15. string _modes;
  16. bool _admin;
  17. List<UserRight*> _channels;
  18. };
  19. class UserRight
  20. {
  21. unsigned char Level;
  22. Channel* Chan;
  23. User* User;
  24. };


n°512088
blackgodde​ss
vive le troll !
Posté le 10-09-2003 à 22:57:50  profilanswer
 

pour le typedef, c vrai je suis un âne...
merci pour le forward declaration, je ne connaissais pas :)


---------------
-( BlackGoddess )-
n°512125
Enidan
Posté le 11-09-2003 à 00:03:54  profilanswer
 

Citation :


List<T> est un template qui permet de faire une liste de type T que j'ai codé (vu que j'ai pas encore compris le principe de la stl)


Pkoi t'utilises pas la STL ? Qu'est-ce qui t'a posé pb ?


Message édité par Enidan le 11-09-2003 à 00:07:45
n°512215
chrisbk
-
Posté le 11-09-2003 à 09:45:08  profilanswer
 

BlackGoddess a écrit :

pour le typedef, c vrai je suis un âne...
merci pour le forward declaration, je ne connaissais pas :)


 
C un bon truc, plutot que de faire le include dans le .h tu fais un  
 
class roger;
 
 
et tu fais l'include dans le .cpp
ca peut aider au niveau des tps de compil

n°512217
LetoII
Le dormeur doit se réveiller
Posté le 11-09-2003 à 09:49:00  profilanswer
 

chrisbk a écrit :


 
C un bon truc, plutot que de faire le include dans le .h tu fais un  
 
class roger;
 
 
et tu fais l'include dans le .cpp
ca peut aider au niveau des tps de compil


 
Attention cependant ça ne marche que si l'ont a un pointeur ou une référence à un objet de type roger. Ce qui colle parfaitement à ce qui est demmandé ici ;)


Message édité par LetoII le 11-09-2003 à 09:49:38

---------------
Le Tyran
n°512218
chrisbk
-
Posté le 11-09-2003 à 09:50:37  profilanswer
 

LetoII a écrit :


 
Attention cependant ça ne marche que si l'ont a un pointeur ou une référence à un objet de type roger. Ce qui colle parfaitement à ce qui est demmandé ici ;)


 
Tootafay, sinon le compilo mugit

n°512714
blackgodde​ss
vive le troll !
Posté le 11-09-2003 à 17:53:12  profilanswer
 

Enidan a écrit :

Pkoi t'utilises pas la STL ? Qu'est-ce qui t'a posé pb ?


 
bin ... je comprends pas le concept d'iterator, de vector ... j'ai commencé a lire la doc et j'ai abandonné parce que je ne comprenais plus rien ...


---------------
-( BlackGoddess )-
n°512732
chrisbk
-
Posté le 11-09-2003 à 18:02:04  profilanswer
 

en tres gros :
 
vector:tableau dynamiqu de donnée (eg il s'adapte au nombre de donnée contenue) Note que la stl propose +eurs container de ce genre, il faut choisir soigneusement le bon en fonction des besoins. (et utiliser reserve() avec les vecteur)
 
iterateur : permettent de parcourir un des containers sus-nommé

n°512736
blackgodde​ss
vive le troll !
Posté le 11-09-2003 à 18:07:56  profilanswer
 

me voila quelque peu éclairé, merci :) je vais me replonger dans la doc alors :)


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 11-09-2003 à 18:07:56  profilanswer
 

n°512738
chrisbk
-
Posté le 11-09-2003 à 18:12:04  profilanswer
 

pour une utilisation rapide de la chose :
 
 

Code :
  1. #include <vector>
  2. ...
  3. std::vector<int> toto;
  4. toto.push_back(5); //ajoute 5
  5. toto.push_back(2); //ajoute 2
  6. int r = toto[0];//r sera egal a 5


 
Maintenant si tu parcours tout ton tableau, utiliser un iterateur sera plus fin. Comment que ca marche ?
 

Code :
  1. std::vector<int>::iterator it,end;
  2. end = toto.end();
  3. it = toto.begin();
  4. while(it != end)
  5. {
  6. int r=*it;
  7. ++it;
  8. }


 
Vala. Fouille la stl, tu trouveras vector, deque, list, stack qui fonctionnent plus ou moins toute sur le meme principe (le tout etant de choisir la structure approprié. Par exemple si tu ajoute frequemment des elements a ta structure, vector ne sera pas du tout conseillé)
 
 

n°512771
Kristoph
Posté le 11-09-2003 à 18:39:20  profilanswer
 

Code :
  1. while(it != toto.end())
  2. {
  3. int r=*it; 
  4. ++it;
  5. }


 
C'est pas plustot comme ça ? ( toto.end() )

n°512773
chrisbk
-
Posté le 11-09-2003 à 18:40:44  profilanswer
 

Kristoph a écrit :

Code :
  1. while(it != toto.end())
  2. {
  3. int r=*it; 
  4. ++it;
  5. }


 
C'est pas plustot comme ça ? ( toto.end() )


 
end = toto.end(), on s'y retrouve (et vu que j'ajoute/enleve rien...)

n°512776
blackgodde​ss
vive le troll !
Posté le 11-09-2003 à 18:46:03  profilanswer
 

ah bien :) ca fonctionne en multithread ?


---------------
-( BlackGoddess )-
n°512784
chrisbk
-
Posté le 11-09-2003 à 18:50:05  profilanswer
 

ben j'imagine que comme pour tout, si tu penses acceder simultanement au meme vecteur par deux threads pour faire autre chose que de la lecture te faudra mettre les synchro habituelles....

n°512787
Kristoph
Posté le 11-09-2003 à 19:00:55  profilanswer
 

BlackGoddess a écrit :

ah bien :) ca fonctionne en multithread ?


 
Telle que la STL est définie, la seule garantie que tu as en multithread est si les différents threads accèdent à différents conteneurs.
 
Certaines implémentations de la STL te permetent de partager un conteneur en lecture seule mais c'est le maximum que tu peux esperer.

n°512789
Taz
bisounours-codeur
Posté le 11-09-2003 à 19:05:58  profilanswer
 

Kristoph a écrit :


 
Telle que la STL est définie, la seule garantie que tu as en multithread est si les différents threads accèdent à différents conteneurs.
 
Certaines implémentations de la STL te permetent de partager un conteneur en lecture seule mais c'est le maximum que tu peux esperer.

à vérifier aussi l'allocateur :  SGI en propose plusieurs sortes


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

  pb de classe qui contient un pointeur vers une autre et inversement...

 

Sujets relatifs
[MFC] Edit: Envoie d'un message vers mes Dialogues..tableau de pointeur sur fonction !!!
fonction qui redirige vers une autre page ?[php]variables statiques dans une classe
(win32) classe dans une dlllien vers les certificats dans un fichier html
Probleme d'importation de classeIntercerpter des messages depuis une sous-classe de TComponent [resolu
[python]classe + liste dans constructeur ??[C] Un n-ieme sujet sur les pointeurs (theorie vers pratique)
Plus de sujets relatifs à : pb de classe qui contient un pointeur vers une autre et inversement...


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