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

  FORUM HardWare.fr
  Programmation
  C++

  Redéfinition du flux et template

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Redéfinition du flux et template

n°1218980
smallGame
Posté le 09-10-2005 à 19:16:29  profilanswer
 

Je souhaiterais redéfinir les opérateurs de flux d'une classe template, le problème c'est que les opérateurs de flux doivent être déclarés hors de la classe. Exemple sans les templates:

Code :
  1. class A
  2. {
  3. private:
  4.         int entier;
  5. public :
  6.        A(){}
  7.        friend ostream& operator<<(ostream& out, A);
  8. };
  9. ostream& operator<<(ostream& out, A a)
  10. {
  11. out<<a.entier<<endl;
  12. }


 
 
Avec les template ça ne fonctionne pas:
 

Code :
  1. template<typename T>
  2. class Vector
  3. {
  4.       protected:
  5.         T _x, _y, _z;
  6.        public:
  7.               Vector();
  8.               Vector(T x, T y, T z);
  9.               virtual ~Vector();
  10.               virtual Vector operator^(Vector v)const;
  11.               friend ostream& operator<<(ostream& out, Vector<T> );
  12.               friend istream& operator>>(ostream& out, Vector<T> );
  13. };
  14. template<typename T>
  15. ostream& operator<<(ostream& out, Vector<T> v)
  16. {
  17. out<<v._x<<',';
  18. out<<v._y<<',';
  19. out<<v._z<<endl;
  20. }


 
Comment dois-je faire? merci

mood
Publicité
Posté le 09-10-2005 à 19:16:29  profilanswer
 

n°1218994
Joel F
Real men use unique_ptr
Posté le 09-10-2005 à 19:39:23  profilanswer
 

friend template<U> ostream& operator<<(ostream& out, Vector<U> );
 
ca marchera mieux ...
 
et les friend c'est laid :o

n°1219007
Taz
bisounours-codeur
Posté le 09-10-2005 à 20:09:17  profilanswer
 

et ça sert à rien dans ce genre de situation.

n°1219020
smallGame
Posté le 09-10-2005 à 20:38:15  profilanswer
 

Merci mais Ca ne fonctionne pas non plus... ca ne compile pas.
 
Normalement je pourrais accéder directement comme ça?? :
[cpp]
Vector<float> u(0.0f, 0.0f, 10.0f);
cout<<u<<endl;
[\cpp]
 
Taz d'avoir la fonction "friend" sert à accéder aux membres de la classe sans accesseurs, comme si c'était une méthode de la classe. Je ne comprend donc pas pourquoi tu dit ça?

n°1219033
Taz
bisounours-codeur
Posté le 09-10-2005 à 20:48:35  profilanswer
 

ben justement, ça ne sert à rien ici. Tu peux faire autrement. Et sans péter l'abstraction.
 

Code :
  1. class C
  2. {
  3.   public:
  4.   void dump(ostream & ) const;
  5.   void load(istream & );
  6. };
  7. inline ostream & operator<<(ostream & o, const C & c) { c.dump(o); return o; }
  8. inline istream & operator>>(istream & i, C & c) { c.load(i); return i; }

n°1219090
smallGame
Posté le 09-10-2005 à 22:42:19  profilanswer
 

Je te remercie c'est cool  :hello:  :)


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

  Redéfinition du flux et template

 

Sujets relatifs
pas de flux et connection internet interrompue.Flux rss
PHP5 - Récupérer la variable d'une URL pour requête dans un flux XMLProbleme avec script de récupération de flux RSS
FLux de la consolewxwidgets et flux video
Template XSLflux rss conversion devises
code source ou de template java pour la gestion des photosprobleme de flux rss . Les site en html peuvent pas l'afficher
Plus de sujets relatifs à : Redéfinition du flux et template


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