Un petit merci a tout ce qui me lirons et peut etre un grand a celui qui me donne ma reponce.
Alors je vous mets dans le bain:
Je doit coder un patron de list doublement chainée (comme dans list.h)
pour cela j'ai:
- Un template<typename T> representant la liste elle memme
- Un template<typename T> representant un element de la liste
Ce dernier (l'element) contient une valeur de type T et 2 pointeurs sur les elements precedent et suivant.
On arrive dans le vif du sujet:
Etant donne que perssonne a part le template de liste n'a besoin de trifouiller dans mon template d'element je veux rendre celui-ci entierement privé et donc rendre friend le template de la list.
Je l'ai fait comme ceci dans le template d'element:
template<typename> friend class DualLinkedList;
Maintenant je veut coder un operator<< pour ma liste voici ca declaration:
friend std::ostream& operator<< (std::ostream& os,const DualLinkedList<T>& l)
Et voila enfin la question:
Je ne peut dans cette operator acceder aux donnée membres du template de l'element. (Normale il ne fait pas partie de la list)
Donc: Comment rendre friend cette operator de la classe d'element ??
j'ai essaye ce genre de chose:
friend std::ostream& operator<< <>(std::ostream& , const DualLinkedList<T>& );
template<typename> friend std::ostream& operator<< <>(std::ostream& , const DualLinkedList& ); //avec ou sens le <>
Et d'autre ...
Pour info je suis sous linux et g++ 4
Bravo !!! et Merci tu est arrivé a me lire jusque ici, tu a gagné le petit merci, maintenant pour le grand ... je croise les dois.
Si pas assez clair, tu peux me demande des precisions.
PS: desolé je ne sait pas ecrire francais et comme j'ai pas un cerveau dualCore c'est encord pire quant je reflechie en memme temps
a++
PS2: Y'a pas un truc pour faire une mise en forme "code"? je trouve pas...
Bon alors c'est ce que j'avais essaye en premier. je m'etait planter dans mon copie colle pour le <> (en memme temps avec le nombre de ligne de test commenter qu'il y avait)
avec ca g++ me dit:
DualLinkedListElement.h:28: error: expected ‘,’ or ‘...’ before ‘<’ token
DualLinkedListElement.h:28: error: ISO C++ forbids declaration of ‘DualLinkedList’ with no type
C comme pour la declaration friend de la classe il me dit la memme chose si je met:
friend class DualLinkedList<T>;
au lieu de:
template<typename> friend class DualLinkedList;
C pour ca que jai essaye de faire dans la memme idée
template<typename> friend std::ostream& operator<<(std::ostream& , const DualLinkedList& );
Merci pour la ptite explication du <> j'etait tomber dessue sur le net et au point ou j'en etait ...