我有WtVector类,它包含一个array [Dimension],并且我不想直接访问其元素,所以我想出了一个制作映射器函数类型的想法,因此,如果我需要说第5个变量,我喜欢mapper(5)但不喜欢vector.el [4]
template <typename Space, int Dim>
struct WtVector {
Space el[Dim] = {};
typedef Space (*Mapper)(int);
Mapper getMapper();
};
但是每当我将WtVector
template <typename Space, int Dim>
struct WtVectorOps {
... some other stuff ...
static Space sqrMagnitue(WtVector<Space, Dim>::Mapper vec);
};
错误:
error: ‘WtVector<Space, Dim>::Mapper’ is not a type
static Space sqrMagnitue(WtVector<Space, Dim>::Mapper vec);
^
是否可以在类中使用此类typedef,如果不是,最好的替代解决方案是什么?如果有比创建子类和定义operator()更简单的解决方案