当前位置 : 主页 > 手机开发 > 其它 >

如何使用继承专门化复杂模板 – C

来源:互联网 收集:自由互联 发布时间:2021-06-19
我似乎无法找到专门化这个模板的正确语法: template class Object, class Var, class Invert, class Step = Var, unsigned int FIXED = IW_GEOM_POINTclass TSin : public BasicTweenObject, Var {... 我想保留 Object作为模板参
我似乎无法找到专门化这个模板的正确语法:

template <class Object, class Var, class Invert, class Step = Var, unsigned int FIXED = IW_GEOM_POINT>
class TSin : public BasicTween<Object, Var> {...

我想保留< Object>作为模板参数,但专门化所有其他参数.我这样想:

template <class Object>
class TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT> {...

这会给出错误.

有人可以提供正确的语法来专门化模板和语法来实例化专用版本吗?

错误是你正在重新定义TSin类.我认为你不能这样做.

您可以做的是声明通用模板并专门化类的定义:

template <class Object, class Var, class Invert, class Step = Var, 
    unsigned int FIXED = IW_GEOM_POINT>
    class TSin;
template <class Object>
    class TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT> {...

或者专门化类成员的定义:

template <class Object>
void TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT>::Foo(...) {...

或声明一个子类:

template <class Object, class Var, class Invert, class Step = Var, 
    unsigned int FIXED = IW_GEOM_POINT>
    class TSin : public BasicTween<Object, Var> {...
template <class Object>
    class SpecialTSin::public TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT>
{...

我认为后一种选择是最好的.

网友评论