我正在制作一个包含将进一步派生为 3 种类型的 GVector 类,即
PVector(像素空间矢量)
MVector(米空间矢量)
RVector(渲染空间矢量)
class GVector {
public :
eVectorSpace eVS; // Defines which space the vector would be
float x,y; // The x and y values of a 2-Dimensional vector
...
GVector operator+ (const GVector& v) const { return GVector(x+v.x, y+v.y, v.eVS); }
...
};
class MVector {
public :
PVector toPVector() {...}
//Will contain functions to convert the same vector into a different space
};
我想让添加位于同一空间中的 2 个向量成为可能
MVector operator+ (const MVector& v) const { return MVector(x+v.x, y+v.y); }
我需要像这样制作基类功能吗?
virtual GVector* operator+ (const GVector* v) const () = 0;
但我想在与两个相加向量相同的空间中返回一个向量。
对于每种类型的向量,将 x,y 的值相加的功能是相同的。有没有办法将其最小化到基类本身?或者有没有更好的方法在同一空间中添加向量并将它们转换为不同的空间?