为多个类或函数</typename>声明模板<typename t =“”>一次

时间:2014-08-31 18:15:15

标签: c++ templates c++11

我不知道这个问题是否有意义;我有几个泛型类的公共方法。

template <typename T>
bool className<T>::isEmpty() const {
    return root == nullptr;
}

template <typename T>
className<T>::className() {
    root = nullptr;
    ...............
}

template <typename T>
treeNode<T>* className<T> :: routine(treeNode<T>* node) {
    .............
    .............
}

每次实现方法时,我都必须编写template<typename T>。这是不必要的冗余。有没有办法写template<typename T>一次,并将其用于所有方法,如 -

template<typename T>
void className<T>:: func1() {
     ............
}
void className<T>:: func2() {
     ............
}
void className<T>:: func3(T const& param) {
     ............
}
// somehow ending template<typename T> scope or no need to end as writing 
// another template<typename T> will vanish previous effect

1 个答案:

答案 0 :(得分:1)

嗯,As @ T.C。说 -

不幸的是没有。如果您不想要额外输入,请将您的函数定义放在类定义中,特别是对于诸如isEmpty()或默认构造函数之类的简单实现函数。

此外,Macro可用于避免长冗余代码,即#define Generic template<typename T>