J'essaie d'écrire un opérateur d'insertion de flux surchargé pour une classe dont le seul membre est un vecteur. C'est un vecteur de Point
s, qui est un struct
contenant deux double
s. Je suppose que je veux insérer une entrée utilisateur (un groupe de double
s) dans un flux que j'envoie ensuite à une méthode de modification. Je travaille hors d'autres exemples d'insertion de flux tels que:Opérateur d'insertion de flux surchargé avec un vecteur
std::ostream& operator<< (std::ostream& o, Fred const& fred)
{
return o << fred.i_;
}
mais lorsque je tente quelque chose de similaire:
istream & operator >> (istream &inStream, Polygon &vertStr)
{
inStream >> ws;
inStream >> vertStr.vertices;
return inStream;
}
Je reçois une erreur « aucune correspondance pour operator >>
etc, etc. » Si je laisse tomber le .vertices
, il compile, mais je me dis que ce n'est pas correct. (En passant, vertices
est le nom de mon vector <Point>
.) Et même si c'est juste, je ne sais pas vraiment quelle syntaxe utiliser dans mon programme pour l'utiliser, et je ne suis pas sûr à 100% sur ce que mon méthode de modificateur doit ressembler.
Voici mon Polygon
classe:
//header
#ifndef POLYGON_H
#define POLYGON_H
#include "Segment.h"
#include <vector>
class Polygon
{
friend std::istream & operator >> (std::istream &inStream, Polygon &vertStr);
public:
//Constructor
Polygon(const Point &theVerts);
//Default Constructor
Polygon();
//Copy Constructor
Polygon(const Polygon &polyCopy);
//Accessor/Modifier methods
inline std::vector<Point> getVector() const {return vertices;}
//Return number of Vector elements
inline int sizeOfVect() const {return (int) vertices.capacity();}
//add Point elements to vector
inline void setVertices(const Point &theVerts){vertices.push_back (theVerts);}
private:
std::vector<Point> vertices;
};
#endif
//Body
using namespace std;
#include "Polygon.h"
// Constructor
Polygon::Polygon(const Point &theVerts)
{
vertices.push_back (theVerts);
}
//Copy Constructor
Polygon::Polygon(const Polygon &polyCopy)
{
vertices = polyCopy.vertices;
}
//Default Constructor
Polygon::Polygon(){}
istream & operator >> (istream &inStream, Polygon &vertStr)
{
inStream >> ws;
inStream >> vertStr;
return inStream;
}
Désolé d'être si vague; Un conférencier nous a juste donné un bref exemple d'insertion de flux, puis nous a laissé seul.
ok, merci pour tout cela, j'ai juste besoin d'y aller et de le comprendre maintenant. – Julz