Vecteur de pointeurs d objet - C++ - Programmation
Marsh Posté le 02-10-2007 à 21:59:45
Ce serait possible d'avoir ta classe Fichier ?
EDIT: et ta methode Repoertoire::add() ...
Marsh Posté le 02-10-2007 à 22:20:17
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)
Marsh Posté le 03-10-2007 à 00:59:10
IrmatDen a écrit : Salut, |
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).
Marsh Posté le 03-10-2007 à 08:48:02
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
Marsh Posté le 03-10-2007 à 09:16:09
punaise ... mais on apprend quoi en école de nos jours ! vector a une méthode erase quand même 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
Marsh Posté le 02-10-2007 à 21:36:10
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
J'ai donc dans mon main :
J'essaye ensuite de supprimer le fichier f :
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 ....