problem d'overload operator >> et << d'un vector<Case> [C++]

Voir le sujet précédent Voir le sujet suivant Aller en bas

problem d'overload operator >> et << d'un vector<Case> [C++]

Message  didi le Lun 31 Déc 2012, 12:21

bonjour
j'ai une clase Case

Case.h

Code:
class Case {
 public :
  ......
friend std::ostream & operator<<(std::ostream & out, Case& in);
friend std::istream & operator>>(std::istream & in, Case& out);

private :
   unsigned int abs;
   unsigned int ord;
   bool toucher;
};

Case.cpp

Code:


....
std::ostream& operator <<(std::ostream& out, batailleNavale::Case& in) {

   out << in.abs;
   out << in.ord;
   out << in.toucher;

   return out;
}

std::istream& operator >>(std::istream& in, batailleNavale::Case& out) {

   in >> out.abs;
   in >> out.ord;
   in >> out.toucher;

   return in;
}

et une classe Navire

Navire.h

Code:
class Navire {
public :
....
friend std::ostream& operator<<(std::ostream& out, batailleNavale::Navire& in);
friend std::istream& operator>>(std::istream& in, batailleNavale::Navire& out);


private:
   std::vector<Case> cases;
   std::string nom;
};

Navire.cpp

Code:
....


ostream& operator<<(ostream& out, batailleNavale::Navire& in) {
   out << in.cases;
   out << in.nom;
   return out;
}

std::istream& operator>>(std::istream& in, batailleNavale::Navire& out) {
   in >> out.cases;
   in >> out.nom;
   return in;
}


et j'ai des erreurs dans Navire.cpp les operator >> et <<

no match for 'operator<<' in 'out << in.batailleNavale::Navire::cases'
ligne : in >> out.cases;
no match for 'operator>>' in 'in >> out.batailleNavale::Navire::cases'
ligne : out << in.cases;


merci d'avance


Dernière édition par didi le Lun 31 Déc 2012, 18:05, édité 1 fois

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: problem d'overload operator >> et << d'un vector<Case> [C++]

Message  nvs le Lun 31 Déc 2012, 17:36

pourquoi dans le titre, parles-tu d'un vector<T> ?






confused

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: problem d'overload operator >> et << d'un vector<Case> [C++]

Message  didi le Lun 31 Déc 2012, 17:41

nvs a écrit:pourquoi dans le titre, parles-tu d'un vector<T> ?






confused

c'est pour un vector d'objet type T ( ici vector<Case> )





didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: problem d'overload operator >> et << d'un vector<Case> [C++]

Message  nvs le Lun 31 Déc 2012, 19:16

didi a écrit:
nvs a écrit:pourquoi dans le titre, parles-tu d'un vector<T> ?

confused

c'est pour un vector d'objet type T ( ici vector<Case> )
et où se trouvent tes opérateurs d'injection (operator>>) d'un vector d'objet type T ( ici vector<Case> ) dans un flux en sortie et d'extraction (operator<<) d'un vector d'objet type T ( ici vector<Case> ) depuis un flux en entrée ?



pale

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: problem d'overload operator >> et << d'un vector<Case> [C++]

Message  didi le Mar 01 Jan 2013, 00:00

d'extraction (operator<<) d'un vector d'objet type T ( ici vector<Case> ) depuis un flux en entrée
ligne : in >> out.cases;


opérateurs d'injection (operator>>) d'un vector d'objet type T ( ici vector<Case> ) dans un flux en sortie
ligne : out << in.cases;

( je pense que j'ai mal compris ... )


didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: problem d'overload operator >> et << d'un vector<Case> [C++]

Message  nvs le Mar 01 Jan 2013, 01:05

je parlais de leurs implémentations, pas de leurs utilisations...




Rolling Eyes

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: problem d'overload operator >> et << d'un vector<Case> [C++]

Message  didi le Mar 01 Jan 2013, 15:41

nvs a écrit:je parlais de leurs implémentations, pas de leurs utilisations...


Rolling Eyes

oui je doit implementer les operators pour les Vector<Case> (ou un container de Case) ...

pour l'operator << :
template<typename T>
std::ostream& operator << (std::ostream& out, const std::vector<T>& v)



Pour l'operator >> :
template<typename T>
std::istream& operator << (std::ostream& in, const std::vector<T>& v)


et je fait , mais je ne sais pas dans quelle classe ils doivent se trouver ..
( dans le classe Case ou Navire car tous les deux ils ont leurs propre operator >> et << )




Code:
template<typename T>
std::ostream& operator << (std::ostream& out, const std::vector<T>& v)  {

   out << v.size() ;
    for (typename std::vector<T>::const_iterator ii = v.begin(); ii != v.end(); ++ii)
    {
        out << *ii ;
    }
   
    return out;

}

Code:
template<typename T>
std::istream& operator << (std::ostream& in, const std::vector<T>& v)  {
   T element;
   int taille = 0;
   in >> taille;
    for (int i = 0; i < taille; ++i)
    {
      in >> element;
        v.push_back(element) ;
    }
   
    return in;

}


bonne année cheers

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: problem d'overload operator >> et << d'un vector<Case> [C++]

Message  nvs le Mar 01 Jan 2013, 17:31

didi a écrit:et je fait , mais je ne sais pas dans quelle classe ils doivent se trouver ..
( dans le classe Case ou Navire car tous les deux ils ont leurs propre operator >> et << )
ta question est assez inquiétante. vois-tu bien la différence entre une fonction et une méthode ? et donc, pourquoi ne pas faire comme pour Case et Navire ? et d'ailleurs, comment faire autrement ?





Basketball

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: problem d'overload operator >> et << d'un vector<Case> [C++]

Message  Contenu sponsorisé Aujourd'hui à 05:26


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum