我正在实现必须模板化的类的成员函数。
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
}
};