我正在实现必须模板化的类的成员函数。

class Foo {

  template <typename T>
  void do(templated_class<T> in);
};

template <typename T>
void Foo::do(templated_class<T> in) {
  // definition starts here.
}


是否有任何简便的方法为模板加上别名,这样我每次与类template <typename T>关联时都不必编写templated_class?例如,如果可能,我正在成像。

class Foo {
  template <typename T>
  using templated_class_t = templated_class<T>;

  void (templated_class_t in);
};

void Foo::do(templated_class_t in) {
   // definition starts here.
}


显然,编译器对此有所抱怨。

最佳答案

如果Foo的大多数成员函数都使用相同的参数作为模板,则只需将Foo设为类模板。此外,您可以将所有定义都放在类中,并保存一些重复的代码。

template<class T>
class Foo
{
    do_fun(template_class<T> in)
    {
        // put definition in-class
    }
};


否则(仅do_fun是成员模板)只需将该定义放入类中

class Foo
{
    template<class T>
    do_fun(template_class<T> in)
    {
        // put definition in-class
    }
};

08-25 08:33
查看更多