我似乎无法找到专门化这个模板的正确语法: 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> {...
我认为后一种选择是最好的.