变参模板类是一种可以接受任意数量的模板参数的类模板,可以用于定义具有不同参数数量的类。下面是一个示例代码,展示了如何实现一个变参模板类:
#include
// 变参模板类
template
class VariadicTemplateClass {
public:
VariadicTemplateClass(Args... args) {
Print(args...);
}
private:
// 递归终止条件
void Print() {
std::cout << std::endl;
}
// 打印每个参数
template
void Print(T arg, Rest... rest) {
std::cout << arg << " ";
Print(rest...);
}
};
int main() {
// 创建一个包含不同参数数量的变参模板类对象
VariadicTemplateClass obj1(10, 3.14f, 3.14159);
VariadicTemplateClass obj2('a', "Hello");
return 0;
}
在上面的示例中,我们定义了一个名为VariadicTemplateClass
的变参模板类。它接受一个模板参数包Args
,可以包含任意数量的参数。
在类的构造函数中,我们使用了递归的方式打印出所有的参数。Print
函数模板是一个递归函数,每次打印出第一个参数,并使用递归调用打印剩余的参数,直到参数列表为空。
在main
函数中,我们创建了两个不同的VariadicTemplateClass
对象,分别传入不同数量的参数。输出结果为:
10 3.14 3.14159
a Hello
这个示例展示了如何使用变参模板类来处理不同数量的模板参数,并在构造函数中对参数进行处理。
上一篇:变参模板函数的非变参模板化