I have try to fix the function returning empty vector. I have did some google search, it shows i need a copy constructor for the class Point
, and i keep receiving this error:
Undefined symbols for architecture x86_64: "Point::Point(Point const&)", referenced from:
Core::render() in Week3_T.o
Core::sortTriVertices(Point&, Point&, Point&) in Week3_T.o
Core::decompose(std::__1::vector<Point, std::__1::allocator<Point> >) in Week3_T.o
Core::drawTriangle(Point, Point, Point) in Week3_T.o
Core::clipedge(std::__1::vector<Point, std::__1::allocator<Point> >, int, int, int, int) in Week3_T.o
std::__1::enable_if<__is_forward_iterator<Point*>::value, void>::type std::__1::vector<Point, std::__1::allocator<Point>
>::__construct_at_end<Point*>(Point*, Point*) in Week3_T.o
void std::__1::vector<Point, std::__1::allocator<Point> >::__push_back_slow_path<Point const>(Point const&) in Week3_T.o
... ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
and my class :
class Point
{
public:
int x;
int y;
Uint8 r;
Uint8 g;
Uint8 b;
Point(int x, int y, Uint8 r, Uint8 g, Uint8 b) : x(x), y(y), r(r), g(g), b(b) {}
Point& operator=(Point const &np){
x=np.x;
y=np.y;
r=np.r;
g=np.g;
b=np.b;
return *this;
}
Point(const Point& );
Point(){}
};
and snippet of code:
std::vector<Point> Core::clipedge(vector<Point> polygon, int x0, int y0, int x1, int y1)
{
int r=rand()%255;
int g=rand()%255;
int b=rand()%255;
// For each side of the polygon, check the 4 cases of sutherland-hodgman.
// Creating a temporary buffer to hold your new set of vertices for the clipped polygon.
std::vector<Point> temp;
temp.push_back(Point(1,2,255,255,255));
int size = (int)polygon.size();
for (int i = 0; i < size; ++i) {
{....}
//push_back clipped point
temp.push_back(p1);
{....}
}
return temp;
system is OSX10.9.2 and ide is xcode5.1.1 compiler is apple llvm5.1
What i need to do to fix this? thanks for help.