加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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它的可变模板允许这更加漂亮,但我没有时间玩这个,所以我最好离开给别人显示.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读