オーバーロードされた抽出演算子を使用して、ベクトルの要素を単純に計算しようとしています。ベクトル contians Point。これは、2 つの double を含む単なる構造体です。ベクトルは Polygon と呼ばれるクラスのプライベート メンバーなので、ここに私の Point.h があります。
#ifndef POINT_H
#define POINT_H
#include <iostream>
#include <string>
#include <sstream>
struct Point
{
double x;
double y;
//constructor
Point()
{
x = 0.0;
y = 0.0;
}
friend std::istream& operator >>(std::istream& stream, Point &p)
{
stream >> std::ws;
stream >> p.x;
stream >> p.y;
return stream;
}
friend std::ostream& operator << (std::ostream& stream, Point &p)
{
stream << p.x << p.y;
return stream;
}
};
#endif
私の Polygon.h
#ifndef POLYGON_H
#define POLYGON_H
#include "Segment.h"
#include <vector>
class Polygon
{
//insertion operator needs work
friend std::istream & operator >> (std::istream &inStream, Polygon &vertStr);
// extraction operator
friend std::ostream & operator << (std::ostream &outStream, const Polygon &vertStr);
public:
//Constructor
Polygon(const std::vector<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 vertices.size();}
//add Point elements to vector
inline void setVertices(const Point &theVerts){vertices.push_back (theVerts);}
private:
std::vector<Point> vertices;
};
と Polygon.cc
using namespace std;
#include "Polygon.h"
// Constructor
Polygon::Polygon(const vector<Point> &theVerts)
{
vertices = theVerts;
}
//Default Constructor
Polygon::Polygon(){}
istream & operator >> (istream &inStream, Polygon::Polygon &vertStr)
{
inStream >> ws;
inStream >> vertStr;
return inStream;
}
// extraction operator
ostream & operator << (ostream &outStream, const Polygon::Polygon &vertStr)
{
outStream << vertStr.vertices << endl;
return outStream;
}
ポイントの挿入/抽出が正しいと判断し、それを使用して挿入および計算できます
そして、私はできるはずだと思います......
cout << myPoly[i] << endl;
私のドライバーで?(ループで)または...
cout << myPoly[0] << endl;
ループなし?私はあらゆる種類を試しました
myPoly.at[i];
myPoly.vertices[i];
などなど
私の抽出機能ですべての検証も試しました
outStream << vertStr.vertices[i] << endl;
ループ内など
私がちょうど作成するとき...
vector<Point> myVect;
私のドライバーでは、私はただ...
cout << myVect.at(i) << endl;
問題はありません。
何日も答えを見つけようとしましたが、本当に迷ってしまいました。
コメントと書式設定が不足していることをお許しください。また、欠落している部分もあります。