c – 具有重复名称的类模板?

前端之家收集整理的这篇文章主要介绍了c – 具有重复名称的类模板?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
可以通过同一个名称定义两个不同的模板(通过模板参数的数量)类?

这是我要做的:

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

猜你在找的C&C++相关文章