我试图访问我的类Polygon.cpp中的头类Polygon.h中的私有向量数组我尝试使用getter,但它不允许我用类本身的实例调用该函数。我该怎么做呢?
#include <string>
#include <vector>
#include "point.h"
class Polygon {
private:
std::vector<Point> pts;
public:
Polygon();
static Polygon parsePolygon(std::string s);
std::string toString() const;
void move(int dx, int dy);
double perimeter() const;
double area() const;
int getNumVertices() const;
bool operator == (const Polygon &p) const;
double isperimetricQuotient() const;
Point getIthVertex(int i) const {return pts[i];}
std::vector<Point> const &getPolygon() const {return pts;}
};
//Polygon.cpp
#include "Polygon.h"
#include <string>
Polygon::Polygon()
{
pts.resize(4);
Point p1(-1,1);
Point p2(1,1);
Point p3(1,-1);
Point p4(-1, -1);
pts[0] = p1;
pts[1] = p2;
pts[2] = p3;
pts[3] = p4;
}
static Polygon parsePolygon(std::string s)
{
int seperator;
int start = 1;
for(int i = 0; seperator != std::string::npos; i++)
{
seperator = s.find(")(");
std::string subPoint = s.substr(start, seperator);
getIthVertex(i) = Point.parsePoint(subPoint);
start = seperator + 1;
}
}
void move(int dx, int dy)
{
for(int i = 0; i < *this.getPolygon().size(); i++)
{
}
}
答案 0 :(得分:0)
parsePolygon的定义应为:
Polygon Polygon::parsePolygon(std::string s) {
....
}
答案 1 :(得分:0)
有很多问题。一个显而易见的是move()
成员函数的定义。它永远不会真正定义:你有一个同名的非成员函数。因此,您必须在Polygon
范围内定义它。接下来,*this.size()
没有按照您的想法执行操作:它被解析为*(this.size())
。无论如何,您不需要this
,因此很容易修复:
void Polygon::move(int dx, int dy)
{
for(int i = 0; i < getPolygon().size(); ++i)
{
}
}
parsePolygon
的定义存在类似的问题,应该是
Polygon Polygon::parsePolygon(std::string s)
{
......
}