我正在为数学库创建自己的向量结构。
目前,我会创建类似于这样的结构:
template <unsigned int size, typename T>
struct vector {
// array of elements
T elements[size];
// ...
};
Run Code Online (Sandbox Code Playgroud)
然而,数学库的主要用例将导致主要使用 2 维、3 维和 4 维向量(通常为vec2、vec3和vec4)。因此,一个有用的功能是能够在可能的情况下从向量访问 x、y、z 和 w 值。然而,这也存在一些问题。
、x、和成员需要是、等的引用变量。这意味着,如果向量的元素少于 4 个,则某些引用将不会被初始化y。zwelements[0]elements[1]
当然,这可以通过专门的模板来实现,这就是我目前正在做的:
template <unsigned int size, typename T>
struct vector {
// ...
}
template <typename T>
struct vector<2, T> {
// same as with before, except with references to X and …Run Code Online (Sandbox Code Playgroud)