begin process at 2012 05 30 18:34:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

template rendre friend un operator<<


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

template rendre friend un operator<<

mercredi 20 décembre 2006 à 04:59:33 | template rendre friend un operator<<

littlenemo

Hello world !!

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...

mercredi 20 décembre 2006 à 13:10:40 | Re : template rendre friend un operator<<

luhtor

tu mets juste:
friend std::ostream & operator << (std::ostream &, const DualLinkedList<T>&);

si ta classe est définie par : template <class T> class DualLinkedList ....

c'est n'importe quoi le <> qui se balade au milieu. "<>" s'utilise que lors de spécialisation totale de template ce qui n'est pas du tout ton cas ici.
jeudi 21 décembre 2006 à 17:58:15 | Re : template rendre friend un operator<<

littlenemo

Salut deja merci,

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  ...

ciao







Cette discussion est classée dans : element, template, std, friend, ostream


Répondre à ce message

Sujets en rapport avec ce message

Template avec surcharge d'opérateurs [ par benjiiim94 ] Bonjour,J'essaie déséspéremment de créer une petite classe pour me familiariser avec les templates. Non sans mal j'ai obtenu un résultat pas mal jusqu Shared Library [ par omarlahlou ] Bonjour tout le monde, <p class="MsoN [VS.NET] Une erreur de compilation incroyable! [ par Sunsawe ] Bonjour, excusez moi mais je ne savais pas comment titrer mon message autrement. Voilà là fameuse erreur qui se suffit à elle même: Mesfunc.cpp(72) : incompatibilité 'std' et 'friend' [ par cabieces ] CABECOUJ'ai définit une fonction amie, celle ci doit donc pouvoir accéder aux champs privée de la classe. Ceci marche trés bien sauf quand la classe u Question syntaxe C++ [ par max12 ] Bonjour,J'ai c'est la première fois que j'utilise les template en C++ et j'ai un soucis, c'est surement quelque chose de très simple au point que vous C'est ça un template ??? [ par wismerhill__ ] Bonjour, j'ai un probleme que je pense etre simple mais bon ...J'ai une classe A dont un attribut est actuelement un std::vectorUne classe B mere de C Liste comportant une classe template [ par horcks ] Bonjour, J'aurais voulu savoir s'il est possible de créer une liste contenant une classe template. Je m'explique : Voici le code (écourté) du template Spécialisation des template [ par lglandeur ] Bonjour,J'ai une fonction template qui appartiens a une class (qui n'est pas template), et je souhaite spécialiser cette fonction pour le type std ::s Erreur de linkage - de vc++98 a vc++2008 [ par pepsidrinker ] Bonjour a tous, merci de lire ce post. Jai un petit probleme de linkage: Jai un programme c++ (pure et dure, pas de MFC ni de .NET), que jai developpe class template ;surcharge operator << >> [ par lui88 ] Bonjour , aprés plusieurs forum je n'arrive toujours pas a reglé mon probleme le programme fonctionnais sur Visual V6 je le migre sous visual studio 2


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales