我目前正在研究模板化数学向量类。这样做时,我遇到了一些令人讨厌的行为。
我实际的向量类是通过模板参数从另一个类继承组件的(因为我的组件是数组和单个变量(x,y,z)的并集)。
我想通过使用声明访问组件类的value_type。但这会产生一个错误,指示标识符未知。访问模板参数的使用声明是否非法? 好的解决方法是什么?
要澄清的代码示例:
#include <iostream>
template<typename T, size_t N>
struct Components
{
public:
using value_type = T;
constexpr static size_t getDim() {return N;}
union
{
T arr[N];
};
};
template<class COMPONENTS>
struct Vector : public COMPONENTS
{
COMPONENTS::value_type mag()
{
return 22.f;
}
};
int main()
{
Vector<Components<float, 3>> vec;
vec.mag();
}
预先感谢, 路易斯·沃思。