如果需要使用同一个模板的多个函数,有没有办法声明和实现它们而无需每次都声明模板?
template <typename T>
T mymax (T a, T b);
template <typename T>
T mymin (T a, T b);
template <typename T>
T myfoo (T a, T b);
/********************************************/
template <typename T>
T mymax (T a, T b) {
return (a > b ? a : b);
}
template <typename T>
T mymin (T a, T b) {
return (a < b ? a : b);
}
template <typename T>
T myfoo (T a, T b) {
return max(a,b)+min(a,b);
}
有没有办法写出template <typename T>
这一行一段代码只用一次?看起来像的东西:
template <typename T> {
T mymax (T a, T b);
T mymin (T a, T b);
T myfoo (T a, T b);
}
(此代码不合法,无法编译)
最佳答案
实现类似目标的唯一方法是滥用结构和静态函数。遗憾的是,您需要明确提及模板类型。
#include <iostream>
template<typename T>
struct my
{
static T max(T a, T b) { return (a > b ? a : b); }
static T min(T a, T b) { return (a < b ? a : b); }
static T foo(T a, T b) { return max(a, b) + min(a, b); }
};
Live Demo.选择一个更好的类名。
我想不出任何“更好”的解决方案。只需写下 template<typename T>
.你会习惯的。它是有目的的,它真的没有你想象的那么丑。
关于c++ - 对多个函数使用相同的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26895238/