[C++] 模板编程-10 模板形参---->模板参数

  • 模板的模板参数:也就是说传入的模板参数也是一个模板

一 前提

  • 模板作为参数时那首先就要定义出这个模板,才能被作为参数传递
  • 为了后面看着方便这里就用x不用平时用到的T
  • typename 只是指定类型名
template <typename x>
class templateBase
{
public:
    void debugT1()
    {
        qDebug()<<m_t1;
    }
    void debugT2()
    {
        qDebug()<<m_t2;
    }
private:
    x    m_t1;
    x    m_t2;
};

二 模板作为参数的声明

首先我们里面的template<typename x>相当于一个模板, 后面的class与typename功能一样,表示指定类型名为T,而这里的类型是前面的template<typename x>

  • C17以前: 
    template <template<typename x>class  T>
  • C17以后
    template <template<typename x>typename T>

三 示例

  • 在调用的时候,我们需要传入一个模板类型
template <typename x>
class templateBase
{
public:
    void debugT1()
    {
        qDebug()<<m_t1;
    }
    void debugT2()
    {
        qDebug()<<m_t2;
    }
private:
    x    m_t1;
    x    m_t2;
};


template <template<typename x>class  T>
class templateA
{
public:
    void print();
private:
    T<int>   a;
    T<float> b;
};


template <template<typename x>class T>
void templateA<T>::print()
{
    qDebug()<<"templateA";
    a.debugT1();
    b.debugT1();
}


// 调用
    templateA<templateBase> testTemplate;
    testTemplate.print();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值