Just giving my vector class, once did - you can take the whole class, but you can remake it by analogy:
.N
typedef struct Vector2 { public: Vector2(); Vector2(float value); Vector2(float x, float y); Vector2 operator+(const Vector2& ROperand); Vector2 operator-(const Vector2& ROperand); Vector2 operator*(const Vector2& ROperand); Vector2 operator/(const Vector2& ROperand); Vector2 operator++(); Vector2 operator++(int); Vector2 operator+=(float var); Vector2 operator--(); Vector2 operator--(int); Vector2 operator-=(float var); bool operator>(const Vector2& ROperand); bool operator>=(const Vector2& ROperand); bool operator<(const Vector2& ROperand); bool operator<=(const Vector2& ROperand); bool operator==(const Vector2& ROperand); bool operator!=(const Vector2& ROperand); bool operator!=(float var); float x, y; //V4 vec4XY(); //V4 vec4WH(); }V2;
.srr
#include "Vector2.h" Vector2::Vector2() { x = 0; y = 0; } Vector2::Vector2(float value) { x = value; y = value; } Vector2::Vector2(float x, float y) { this->x = x; this->y = y; } //V4 Vector2::vec4XY() //{ // return V4(x,y,0,0); //} // //V4 Vector2::vec4WH() //{ // return V4(0,0,x,y); //} Vector2 Vector2::operator+(const Vector2& ROperand) { Vector2 Result; Result.x = x + ROperand.x; Result.y = y + ROperand.y; return Result; } Vector2 Vector2::operator-(const Vector2& ROperand) { Vector2 Result; Result.x = x - ROperand.x; Result.y = y - ROperand.y; return Result; } Vector2 Vector2::operator*(const Vector2& ROperand) { Vector2 Result; Result.x = x * ROperand.x; Result.y = y * ROperand.y; return Result; } Vector2 Vector2::operator/(const Vector2& ROperand) { Vector2 Result; Result.x = x / ROperand.x; Result.y = y / ROperand.y; return Result; } Vector2 Vector2::operator++() { Vector2 Result; Result.x = ++x, Result.y = ++y; return Result; } Vector2 Vector2::operator++(int) { Vector2 Result; Result.x = x++, Result.y = y++; return Result; } Vector2 Vector2::operator--() { Vector2 Result; Result.x = --x, Result.y = --y; return Result; } Vector2 Vector2::operator--(int) { Vector2 Result; Result.x = x--, Result.y = y--; return Result; } bool Vector2::operator>(const Vector2& ROperand) { if ((x > ROperand.x) , (y > ROperand.y)) return 1; return 0; } bool Vector2::operator>=(const Vector2& ROperand) { if ((x >= ROperand.x) , (y >= ROperand.y)) return 1; return 0; } bool Vector2::operator<(const Vector2& ROperand) { if ((x < ROperand.x) , (y < ROperand.y)) return 1; return 0; } bool Vector2::operator<=(const Vector2& ROperand) { if (x <= ROperand.x , (y <= ROperand.y)) return 1; return 0; } bool Vector2::operator==(const Vector2& ROperand) { if ((x == ROperand.x) , (y == ROperand.y)) return 1; return 0; } bool Vector2::operator!=(const Vector2& ROperand) { if ((x != ROperand.x) , (y != ROperand.y)) return 1; return 0; } bool Vector2::operator!=(float var) { if (!((x == var) , (y == var))) return 1; return 0; } Vector2 Vector2::operator+=(float var) { Vector2 Result; Result.x = x += var; Result.y = y += var; return Result; } Vector2 Vector2::operator-=(float var) { Vector2 Result; Result.x = x -= var; Result.y = y -= var; return Result; }