I have a basic vector/point class where I've overloaded a bunch of arithmetical operators:
Code:
#pragma once
class point
{
public:
point()
{
}
point(float p_x, float p_y, float p_z) : x(p_x), y(p_y), z(p_z)
{
}
point& operator+(point& right)
{
return point(x + right.x, y + right.y, z + right.z);
}
point& operator-(point& right)
{
return point(x - right.x, y - right.y, z - right.z);
}
point& operator*(point& right)
{
return point(x * right.x, y * right.y, z * right.z);
}
point& operator*(const float right)
{
return point(x * right, y * right, z * right);
}
point& operator*(const double right)
{
return point(x * right, y * right, z * right);
}
point& operator+=(point& right)
{
return point(x + right.x, y + right.y, z + right.z);
}
point& operator*=(const point& right)
{
return point(x * right.x, y * right.y, z * right.z);
}
point& operator*=(point right)
{
return point(x * right.x, y * right.y, z * right.z);
}
point& operator*=(const float& right)
{
return point(x * right, y * right, z * right);
}
point& operator*=(const double& right)
{
return point(x * right, y * right, z * right);
}
float x;
float y;
float z;
};
I can use it fine like
Code:
point p(50,50,50);
point q(50,50,50);
point t = p * q + q;
However when I put this point type into a struct and try to access the members after passing it through by const reference:
Code:
struct sextic {
point a,b,c,d,e,f,g;
};
inline static sextic sexticDifference(const sextic &p_sextic1, const sextic &p_sextic2)
{
sextic result;
result.a = p_sextic2.a - p_sextic1.a;
result.b = p_sextic2.b - p_sextic1.b;
result.c = p_sextic2.c - p_sextic1.c;
result.d = p_sextic2.d - p_sextic1.d;
result.e = p_sextic2.e - p_sextic1.e;
result.f = p_sextic2.f - p_sextic1.f;
result.g = p_sextic2.g - p_sextic1.g;
return result;
}
This gives me an "operator not defined" error for compilation. How do I fix this, please?