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

0.简介

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

1.tuple

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

tuple<int> a;
tuple<int,float> b;
tuple<int,float,double> c;

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

2.mytuple

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

template<typename T,typename... A>
class mytuple
{
public:
};

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

template<typename T,typename... A>
class mytuple :public mytuple<A...>
{
	T data;
public:
};

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

template<typename... A>
class mytuple;

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

template<typename T,typename... A>
class mytuple<T,A...> :public mytuple<A...>
{
	T data;
public:
	mytuple() {}
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值