我不知道这个问题是否有意义;我有几个泛型类的公共方法。
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
答案 0 :(得分:1)
嗯,As @ T.C。说 -
不幸的是没有。如果您不想要额外输入,请将您的函数定义放在类定义中,特别是对于诸如isEmpty()
或默认构造函数之类的简单实现函数。
此外,Macro可用于避免长冗余代码,即#define Generic template<typename T>
。