唯一のメンバーがベクトルであるクラスのオーバーロードされたストリーム挿入演算子を作成しようとしています。Point
これは、struct
2 つの を含むのベクトルですdouble
。私が望むのは、ユーザー入力 (一連の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
は私の名前ですvector <Point>
。)そして、それが正しいとしても、プログラムでそれを使用するためにどの構文を使用すればよいか実際にはわかりません。のように見える必要があります。
これが私の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;
}
あいまいで申し訳ありません。ある講師が、ストリーム挿入の簡単な例を示してくれました。