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

  FORUM HardWare.fr
  Programmation
  C++

  Conflits avec les operator >> et <<

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conflits avec les operator >> et <<

n°1440544
akalash47
Posté le 11-09-2006 à 20:16:19  profilanswer
 

J'essaye de créer des exporteurs d'un mesh vers des fichiers de types différents : .x, .3ds, etc...
 
Le problème, c'est que j'ai défini les operateurs >> et << de cette façon :
 
 
namespace fileX
  {
  istream& operator << ( istream& stream, Mesh& mesh );
  ostream& operator >> ( ostream& stream, const Mesh& mesh );
  }
 
 
namespace file3ds
  {
  istream& operator << ( istream& stream, Mesh& mesh );
  ostream& operator >> ( ostream& stream, const Mesh& mesh );
  }
 
Mais j'ai beau utiliser "using namespace fileX;" dans mon exporteur de fichiers .x, rien n'y fait!
Visual studio me dit qu'il est incapable de savoir lequel des 2 opérateurs >> utiliser.
 
Comment est-ce que je peux contourner ce problème?
 
Merci!

mood
Publicité
Posté le 11-09-2006 à 20:16:19  profilanswer
 

n°1440548
Taz
bisounours-codeur
Posté le 11-09-2006 à 20:30:23  profilanswer
 

t'as inversé les signatures

n°1440551
akalash47
Posté le 11-09-2006 à 20:40:03  profilanswer
 

Taz a écrit :

t'as inversé les signatures


 
Ah oui c'est possible  :lol:
 
Enfin bon j'ai tapé ça à l'arrache, je ne bosse pas sur le même PC.
 
Sinon pas d'idée?  :(


Message édité par akalash47 le 11-09-2006 à 20:41:23
n°1440553
Taz
bisounours-codeur
Posté le 11-09-2006 à 20:47:01  profilanswer
 

Code :
  1. #include <iostream>
  2. struct Foo { };
  3. namespace Bar {
  4.   std::ostream & operator<<(std::ostream &os, const Foo & )
  5.   {
  6.     return os << 42;
  7.   }
  8. }
  9. namespace Baz {
  10.   std::ostream & operator<<(std::ostream &os, const Foo & )
  11.   {
  12.     return os << 69;
  13.   }
  14. }
  15. int main()
  16. {
  17.   Foo f;
  18.   {
  19.     using namespace Bar;
  20.     std::cout << f << '\n';
  21.   }
  22.   {
  23.     using namespace Baz;
  24.     std::cout << f << '\n';
  25.   }
  26. }

n°1440569
akalash47
Posté le 11-09-2006 à 21:27:38  profilanswer
 

Non justement, ça ne marche précisément pas!

n°1440571
Taz
bisounours-codeur
Posté le 11-09-2006 à 21:29:59  profilanswer
 

ben si.

n°1440574
akalash47
Posté le 11-09-2006 à 21:40:11  profilanswer
 

Enfin, c'est plus subtil que ça : j'obtiens une ambiguité DANS le namespace :
 

Code :
  1. #include <iostream>
  2. struct Mesh
  3.   {
  4.   MeshSubset subset;
  5.   };
  6. namespace file3ds
  7.   {
  8.   std::ostream & operator <<  (std::ostream &os, const MeshSubset& subset )
  9.     {
  10.     return os << "3ds susbset exported";
  11.     }
  12.   std::ostream & operator <<  (std::ostream &os, const Mesh& mesh )
  13.     {
  14.     return os << "3ds mesh and " << mesh.subset; // conflit ici : operateur ambigü
  15.     }
  16.   }
  17. namespace fileX
  18.   {
  19.   std::ostream & operator <<  (std::ostream &os, const MeshSubset& subset )
  20.     {
  21.     return os << "x susbset exported";
  22.     }
  23.   std::ostream & operator <<  (std::ostream &os, const Mesh& mesh )
  24.     {
  25.     return os << "x mesh and " << mesh.subset; // conflit ici : operateur ambigü
  26.     }
  27.   }
  28. int main( )
  29.   {
  30.   Mesh m;
  31.   using namespace fileX;
  32.   std::cout << m << std::endl;
  33.   }
  34. }

n°1440583
Taz
bisounours-codeur
Posté le 11-09-2006 à 22:39:45  profilanswer
 

paye toi un vrai compilo ?


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

  Conflits avec les operator >> et <<

 

Sujets relatifs
std::sort et operator d'affectation[C++/résolu] operator [][] () et types variants
Operator= et membres constantserror C2274: '->' : illegal as right side of '.' operator
surcharge operator<<C++ operator << pour les ofstream
[c++] Bool operator <Classe abstraite et operator<<
Comportement de operator[] avec [][] 
Plus de sujets relatifs à : Conflits avec les operator >> et <<


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