Pointeurs intelligents et liste chainée - C++ - Programmation
Marsh Posté le 04-04-2006 à 20:31:06
> est ce une bonne idée de faire une liste chainée avec des "smart pointers" ?
J'aurai tendance à dire non... les smart pointers ne devraient pas être stockés en dehors de la pile principale (sinon ils ne sont plus <<smart>> ). En plus c'est de la bidouille.
Marsh Posté le 04-04-2006 à 20:35:39
> class FredPtr;
Te permet d'utiliser des pointeurs (des vrais) sur FredPtr, sinon le compilo ne connait pas la taille de cette classe au moment où il essaye de compiler la classe Fred.
Marsh Posté le 04-04-2006 à 20:36:14
nargy a écrit : > est ce une bonne idée de faire une liste chainée avec des "smart pointers" ? |
Ok je comprends, alors comment géré proprement une liste doublement chainée dont les noeuds sont eux-memes des listes chainées ?
Au bout d'un moment le prog crash.
Marsh Posté le 04-04-2006 à 20:41:57
nargy a écrit : > class FredPtr; |
Si je te comprends bien, il faut que mes fonctions create renvoient un FredPtr*...et dans ce cas je perds l'interet du "smart pointer" d'ou ta premiere réponse...C'est ça ?
Marsh Posté le 04-04-2006 à 20:45:46
Le meilleur moyen reste de bien cloisonner ton code:
Marsh Posté le 04-04-2006 à 20:49:34
Merci de ton aide car sans ça je m'orientais vers une impasse.
Marsh Posté le 04-04-2006 à 20:55:24
Un exemple, avec autodelete en dehors du template, mais tu peut le modifier pour linclure dans le template (différence: ne peut changer l autodelete au runtime, mais plus optimisé).
Code :
|
Marsh Posté le 04-04-2006 à 20:06:02
Bonjour,
Je voulais savoir si quelqu'un avait déjà implémenter une liste chainée avec des "smart pointers" ?
Je pensais faire quelque chose comme ça (tiré du chapitre 16 de la FAQ C++ Lite):
Mais lors de la compilation il me met une erreur comme quoi le type de Suivant n'est pas défini (invalid use of undefined type et forward declaration of 'struct FredPtr') et le résultat des fonction create non plus...en somme il ne reconnait pas la classe FredPtr dans la classe Fred.
Qu'ai je fait de mal ?
Question subsidiaire : est ce une bonne idée de faire une liste chainée avec des "smart pointers" ?
Message édité par Alban44 le 04-04-2006 à 20:32:12