These classes are published classes, simply I am using them now, but cannot even get them to compile. So for example I get the following errors relating to member functions not being found. I have simplified the code such that one can see the point of failure. Does anyone know what is happening here to cause the failure.
Code:Edge.cpp ======== #include "Point.h" #include "Edge.h" Edge::Edge(Point &_org, Point &_dest) : org(_org), dest(_dest) { } /*Edge::Edge(void) : org(Point(0,0)), org(Point(1,0)) { } */ Edge &Edge::rot(void) { Point m; m = 0.5 * (org + dest); Point v = dest - org; Point n(v.y, -v.x); org = m - 0.5 * n; dest = m + 0.5 * n; return *this; } Edge.h file ======== class Point; class Edge { public: Point org; Point dest; Edge(Point &_org, Point &_dest); Edge(void); Edge &rot(void); //Edge &flip(void); //Point point(double); //int intersect(Edge&, double&); //int cross(Edge&, double&); //bool isVertical(void); //double slope(void); //double y(double); }; Point.cpp ======== #include "Point.h" Point::Point(double _x, double _y): x(_x), y(_y) { } Point Point::operator+(Point &p) { return Point(x+p.x, y+p.y); } Point Point::operator-(Point &p) { return Point(x - p.x, y-p.y); } Point operator*(double s, Point &p) { return Point(s *p.x, s *p.y); } double Point::operator[](int i) { return (i ==0) ? x : y; } int Point::operator==(Point &p) { return (x == p.x) && (y == p.y); } int Point::operator!=(Point &p) { return !(*this == p); } int Point::operator<(Point &p) { return ((x < p.x) || ((x == p.x) && (y < p.y))); } int Point::operator>(Point &p) { return ((x > p.x) || ((x == p.x) && (y > p.y))); } /*int main(void) { return (0); }*/ Point.h ======== class Point{ public: double x; double y; Point(double _x = 0.0, double _y = 0.0); Point operator+(Point&); Point operator-(Point&); friend Point operator*(double, Point&); double operator[](int); int operator==(Point&); int operator!=(Point&); int operator<(Point&); int operator>(Point&); int classify(Point&, Point&); //int classify(Edge&); double polarAngle(void); double length(void); //double distance(Edge&); }; Error on compilation. ============ g++ -c Edge.cpp -o Edge.o Edge.cpp: In member function ‘Edge& Edge::rot()’: Edge.cpp:20: error: no match for ‘operator*’ in ‘5.0e-1 * ((Edge*)this)->Edge:rg. Point:perator+(((Point&)(&((Edge*)this)->Edge::dest)))’ Point.h:10: note: candidates are: Point operator*(double, Point&) Edge.cpp:23: error: no match for ‘operator-’ in ‘m - operator*(5.0e-1, ((Point&)(& n)))’ Point.h:9: note: candidates are: Point Point:perator-(Point&) Edge.cpp:24: error: no match for ‘operator+’ in ‘m + operator*(5.0e-1, ((Point&)(& n)))’ Point.h:8: note: candidates are: Point Point:perator+(Point&)Code:The Makefile is as follows: all: Poly Poly: Point.o Edge.o Polygons.o g++ -o Poly Point.o Edge.o Polygons.o Point.o: Point.cpp g++ -c Point.cpp -o Point.o Edge.o: Edge.cpp g++ -c Edge.cpp -o Edge.o Polygons.o: Polygons.cpp g++ -c Polygons.cpp -o Polygons.o clean: find . -name '*.o' | xargs rm -f ;
Thanks



LinkBack URL
About LinkBacks



