我们知道,一个模板类在实例化时一定要指定类型。但是,在项目开发中,模板的类型不是编译时确定的,而是要在运行时才会确定。简述一下本人遇到的开发环境:我现在要实现一棵B+树,B+树中key的类型是可变的,可能是int可能是string。因此我们把B+树设计为模板类。

而这棵B+树是环境类中的成员变量,而且这棵B+树的类型是根据环境配置可变的。那么我们怎么定义这棵B+树呢?下面有一种麻烦的方法,定义这棵B+树为void*类型:void *bPlusTree。使用ifelse语句判断环境类的类型:如果是int类型,则 bPlusTree = new BPlusTree<int>等。然后后续对B+树的操作都要使用ifelse语句对bPlusTree强制转型,然后再操作。

如何简化这个过程。我们要使用多态。声明一个B+树的纯虚类VisualBPlusTree,该类不是模板类,定义了B+树操作的接口insert(void* arg)。然后声明真正的B+树类BPlusTree<T>:public VisualBPlusTree。该类实现insert接口,将insert(void *arg)操作转移到insertInner((T*)arg)即可。

项目git地址:https://github.com/woqq773743943/TemplateQuestionSolution.git

模板类的动态模板特化相关推荐

  1. ThinkPhp使用PHPWord模板类生成动态表格

    本文简单介绍如何在ThinkPHP3.2中使用PHPWord根据表格内容,动态生成多行表格. 有关在ThinkPHP3.2中使用PHPWord,可以参考"thinkphp3.2集成phpwo ...

  2. C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…

    在c++海大本科课程设计的最后章节(模板使用 )中涉及到了在Mat类模板中定义友元函数friend Mat<T> operator+(Mat<T> &m, T num) ...

  3. 基于java + easyExcel实现模板填充生成动态模板并设置指定单元格为下拉框样式

    需求描述:java后端开发过程中,为了满足动态生成excel模板并设置指定单元格为下拉框,且下拉框的数据项来源为动态查询的需求,在基于easyExcel的情况下,使用模板填充的方式,完成该需求. 1. ...

  4. 如何写模板类?(模板类的简单例子)

    本文通过c++ primer plus中的例子来学习写模板类. 1.为什么需要模板类? 为了满足代码重用的需求. 比如stack类,希望不同的类型都能用. 先看看用typedef 定义的stack类. ...

  5. excel导出时不建模板类,动态导出

    1.Controller /*** 自定义导出** @param* @return*/@GetMapping("/export")public void exportExcel(H ...

  6. (函数/类模板)的(偏特化/全特化)

    特化的概念 特化,就是将泛型的东东搞得"具体化"一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特定的修饰或完全被指定了下 ...

  7. 模板类的全特化、偏特化

    我们先来定义一个普通的模板类 1 template<class T> 2 struct Test 3 { 4 Test(){ cout << "模板类" & ...

  8. [C++基础]034_C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)

    http://www.cnblogs.com/alephsoul-alephsoul/archive/2012/10/18/2728753.html 1.  主版本模板类 首先我们来看一段初学者都能看 ...

  9. C++模板剖析:函数模板、类模板解析

    C++中关于模板&泛型编程问题:   问题引入:何编写一个通用加法函数? (1)使用函数重载,针对每个所需相同行为的不同类型重新实现它 int Add(const int &_iLef ...

最新文章

  1. linux下crontab实现定时服务详解
  2. Spring(二)——IoC
  3. pythoncgi模块文档_python使用cgi模块处理表单
  4. 浅谈PVID和VID区别
  5. 深入理解右值引用,move语义和完美转发
  6. GEO2R/GEOquery的结果可能是错的!!!
  7. 使用exp命令实现Oracle数据备份(数据导出)
  8. 《需求工程——软件建模与分析》阅读笔记之一
  9. 基于bootstrap的时间选择插件daterangepicker以及汉化方法
  10. SQL查询最近几年、几月的数据
  11. DL实战(2):SiamFC - TensorFlow配置
  12. BNS100数码人像采集系统产品说明书
  13. 信息学奥赛一本通答案大全
  14. STM32实现NRF24L01通信
  15. mysql emoji表情_mysql utf8mb4与emoji表情
  16. 设计32信道的多相滤波结构数字接收机
  17. 录音转文字电脑软件有哪些?录音如何转文字?
  18. idea设置主题背景
  19. 【VRP问题】基于遗传算法求解容量和距离约束的车辆路径规划问题CDVRP附matlab代码
  20. inetd和xinetd的区别 (ZT)

热门文章

  1. ​智能电子压力开关的构成
  2. 我的金工实习心得(四):铸工第三四五六天
  3. STM32单片机启动过程详解
  4. 计算机考研专业课真题,计算机考研专业课 408 真题 20092013完美打印版.pdf
  5. 昨天我开除了一名程序员,因为简历造假!
  6. C# 邮箱批量注册 设计思路(以163邮箱为例)
  7. MCU独立看门狗 vs 窗口看门狗
  8. 腾讯QQ/TM珊瑚虫外挂 2.3.4 QQ IP数据库
  9. spring boot火车票订票系统 毕业设计-附源码171538
  10. mswrd632,图文详解解决word无法启动转换器mswrd632的方法