C++模板可变参数(2)---tuple

0.简介

前一篇介绍了模板的可变参数在函数的用法,这次来研究一下在类中的用法。

1.tuple

在STL中有tuple,其可以包含多种不同类型的变量用法如下。

tuple a;
tuple b;
tuple c;

上面的用法和上一篇的print函数中的参数很类似,所以我分析tuple里面也用到了类似的原理,所以我们自己简要实现一下。

2.mytuple

显然下面的代码是不能达到目的的。

template
class mytuple
{
public:
};

为了能实现类似print(int,float,double)的类似效果,那么类也需要实现某种递归,这里需要的就是继承递归,然后T成为一个被每层递归分离出来的变量。

template
class mytuple :public mytuple
{
	T data;
public:
};

到了最后一层递归的时候,A中为空包,所以还需要一个空的mytuple类。因为是要继承mytuple所以要先声明出对应的模板,然后仿照print的方法写出空和分离变量的类即可。

template
class mytuple;

template<>
class mytuple<>
{
public:
};

template
class mytuple :public mytuple
{
	T data;
public:
	mytuple() {}
};

 

你可能感兴趣的:(C++语言,C++)