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

  FORUM HardWare.fr
  Programmation
  C++

  Vecteur de pointeurs d objet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Vecteur de pointeurs d objet

n°1618137
Didine981
Posté le 02-10-2007 à 21:36:10  profilanswer
 

Bonsoir.
 
voila j'aimerai disposer d'un type Repertoire et d'un type Fichier. Un répertoire pouvant etre composé de fichiers et de répertoires, j'ai donc crée une super classe SuperRep.  
 
dans mon répertoire, je déclare un attribut de type vector
 
 

Code :
  1. class Repertoire {
  2. private : vector<SuperRep*> _liste
  3. ...
  4. }


 
J'ai donc dans mon main :  
 

Code :
  1. Fichier f("fich",100);
  2. Repertoire rep("rep1" );
  3. rep.add(&f);


 
J'essaye ensuite de supprimer le fichier f :  

Code :
  1. f.~Fichier();


Seulement le problème est que même après cette suppression de f, le fichier appareait toujorus dans le répertoire.
je ne sais pas comment faire ...
 
Si quelqu'un a une solution ....

mood
Publicité
Posté le 02-10-2007 à 21:36:10  profilanswer
 

n°1618139
Olivier51
Posté le 02-10-2007 à 21:59:45  profilanswer
 

Ce serait possible d'avoir ta classe Fichier ?

 

EDIT: et ta methode Repoertoire::add() ...


Message édité par Olivier51 le 02-10-2007 à 22:07:50
n°1618142
IrmatDen
Posté le 02-10-2007 à 22:20:17  profilanswer
 

Salut,
 
Repertoire et Fichier devrait tout 2 hériter d'un type commun car il y a tout de même certains points communs (tant en membre qu'en méthodes).
 
Plus directement lié à ton problème:
> On n'appelle pour ainsi dire jamais un destructeur explicitement
> La suppression d'un fichier *ne doit pas* être placé dans le destructeur; ça me ferait assez mal qu'en éteignant windows, il m'efface tout les fichiers et répertoires auquels j'ai pu accéder à quelque degré que ce soit ;)
> Lorsque tu appelles f.~Fichier();, tu ne l'enlèves pas du conteneur du répertoire, tu ne fais que le corrompre (puisque tu as dès lors un pointeur vers une instance qui n'existe plus)

n°1618175
ptitchep
Posté le 03-10-2007 à 00:59:10  profilanswer
 

IrmatDen a écrit :

Salut,
 
Repertoire et Fichier devrait tout 2 hériter d'un type commun car il y a tout de même certains points communs (tant en membre qu'en méthodes).
 
Plus directement lié à ton problème:
> On n'appelle pour ainsi dire jamais un destructeur explicitement
> La suppression d'un fichier *ne doit pas* être placé dans le destructeur; ça me ferait assez mal qu'en éteignant windows, il m'efface tout les fichiers et répertoires auquels j'ai pu accéder à quelque degré que ce soit ;)
> Lorsque tu appelles f.~Fichier();, tu ne l'enlèves pas du conteneur du répertoire, tu ne fais que le corrompre (puisque tu as dès lors un pointeur vers une instance qui n'existe plus)


 
tout à fait d'accord.
J'ajouterais que voyant f.~Fichier(); et rep.add(&f); j'imagine que f n'est pas un pointeur, il est donc inutile d'appeler le destructeur (même mal).
 
Personnellement (les remarques sont les bienvenues) j'aurais appelé Repertoire::add() dans  le constructeur de Fichier et Repertoire::supp() dans son destructeur.
Comme ça, un fichier est forcément dans un répertoire (à condition sous windows de considérer la racine comme un répertoire) et le repertoire n'est pas corrompu à la destruction du Fichier (suppression ou fin de l'application).


---------------
deluser --remove-home ptitchep
n°1618191
Taz
bisounours-codeur
Posté le 03-10-2007 à 08:48:02  profilanswer
 

Des fois on peut se dire que le nommage c'est ~destructeur() parce que c'est aussi difficile à écrire, mais non. Même si on avait choisi un truc genre insulte dans TinTin, y aurait toujours eu un zouave pour l'appeler explicitement :/

n°1618206
Joel F
Real men use unique_ptr
Posté le 03-10-2007 à 09:16:09  profilanswer
 

punaise ... mais on apprend quoi en école de nos jours ! vector a une méthode erase quand même :o et je ne rviendrais pas sur le passage par pointeur pour add() et l'utilsiation explicite du destructeur.  
 
Joel, qui va chercher sa boite de Tranxen v_v


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

  Vecteur de pointeurs d objet

 

Sujets relatifs
Grand concours sur les technos Objetsuppression d'objet d'un arraylist
[RESOLU] [Ajax] Pb de binding objet avec PrototypeStocker un vecteur colonne dans une table MySql
Objet Webbrowser + javascript + blocage js local IE7Deux Pointeurs pascal 1-@
Probleme marge IE et objet COM[WebServices] Debug objet COM
Modification objet Active DirectoryPickle de Python. QLabel non sérialisable..
Plus de sujets relatifs à : Vecteur de pointeurs d objet


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