c – 具有重复名称的类模板?
发布时间:2020-12-16 07:51:32 所属栏目:百科 来源:网络整理
导读:可以通过同一个名称定义两个不同的模板(通过模板参数的数量)类? 这是我要做的: namespace MyNamespace{templateclass TRetclass FunctionObject{ typedef typename TRet ReturnType; virtual ReturnType const operator()() const = 0;};templateclass TRe
可以通过同一个名称定义两个不同的模板(通过模板参数的数量)类?
这是我要做的: namespace MyNamespace { template<class TRet> class FunctionObject { typedef typename TRet ReturnType; virtual ReturnType const operator()() const = 0; }; template<class TRet,class TArg0> class FunctionObject { typedef typename TRet ReturnType; typedef typename TArg0 FirstArgumentType; virtual ReturnType const operator()(FirstArgumentType const &arg) const = 0; }; } 在第二个FunctionObject结构定义的括号末尾,我收到一个错误提到太多的模板参数. 我知道这可以在C#中完成,但不知道C.有人可以在这里散发一些光吗? 解决方法
我认为部分专业化将会诀窍:
namespace MyNamespace { template<class TRet,class TArg0> class FunctionObject { typedef typename TRet ReturnType; typedef typename TArg0 FirstArgumentType; virtual ReturnType const operator()(FirstArgumentType const &arg) const = 0; }; template<class TRet> class FunctionObject<TRet,void> { typedef typename TRet ReturnType; virtual ReturnType const operator()() const = 0; }; } 您还可以从具有多个参数的主模板开始. 我认为C11它的可变模板允许这更加漂亮,但我没有时间玩这个,所以我最好离开给别人显示. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读