具有模板的类中的函数的Typedef:不是类型

时间:2018-06-20 01:58:56

标签: c++ c++14

我有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 :: Mapper设置为类型时,编译器就会大喊它不是类型

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()更简单的解决方案

0 个答案:

没有答案