我正在尝试为唯一成员是向量的类编写重载流插入运算符。它是一个s的向量Point
,它是一个struct
包含两个double
s的a。我想我想要的是将用户输入(一堆double
s)插入到流中,然后发送到修饰符方法。我正在处理其他流插入示例,例如:
std::ostream& operator<< (std::ostream& o, Fred const& fred)
{
return o << fred.i_;
}
但是当我尝试类似的事情时:
istream & operator >> (istream &inStream, Polygon &vertStr)
{
inStream >> ws;
inStream >> vertStr.vertices;
return inStream;
}
我收到一个错误“不匹配operator >>
等”。如果我不使用.vertices
,它会编译,但我认为这是不对的。(顺便说一句,vertices
是 my 的名称vector <Point>
。)即使它是正确的,我实际上也不知道在我的程序中使用什么语法来使用它,而且我也不能 100% 确定我的修饰符方法需要看起来像。
这是我的Polygon
课:
//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;
}
很抱歉这么含糊;一位讲师刚刚给了我们一个流插入的简短示例,然后就让我们自己离开了。