需求背景:

比如说参数化建模中,需要创建不同的图元(如墙梁板柱),这些图元创建的步骤相同构造图元的参数不同(先检验参数合法性、构造三维体、存储到对应数据库中)。

解决方案:

1、先抽象;相同点(墙梁板柱都是三维体,构造的步骤相同),不同点(所需参数不一样、创建的细节不一样)。

经分析可以先提基类和类模板的思想。基类参数采用模板,不同子类的不同参数等子类来初始化。

详细实现(简易代码示例):

#pragma once
#include "StdAfx.h"
#include <string>
#include <iostream>
template<typename DataT>

class CBaseObject
{
public:
CBaseObject():m_objectData(nullptr){}
~CBaseObject(){}
void setParam(DataT* objectData) { m_objectData = objectData;}
DataT* getParam() { return m_objectData; }
virtual void doSomething() = 0;
protected:
DataT* m_objectData;
};

//
class AParam
{
public:
//to do A图元需要的实际参数
};

class BParam
{
public:
//to do B图元需要的实际参数
};
//

class AObject : public CBaseObject<AParam>
{
public:
AObject(){}
~AObject(){}
void doSomething() { }
};

class BObject : public CBaseObject<BParam>
{
public:
BObject(){}
~BObject(){}
void doSomething() { }
};

【厚积薄发系列】C++项目总结10—C++模板在实际项目常用场景之一相关推荐

  1. python小项目推荐项目-推荐 10 个有趣的 Python 项目

    想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...

  2. 【厚积薄发系列】C++项目总结19—组件化架构思想

    在一个大型的项目中,随着业务不断拓展,开发人员和代码量的不断增加,传统的单体架构会经常遇到以下问题: 1.业务模块划分不够清晰,模块之间高度耦合,修改和新增需求的时候可能会导致牵一发而动全身的雪崩. ...

  3. 项目管理—项目经理常用的10张图表推荐(华为项目管理10大模板)

    项目管理其实是有一些常用的工具和模板的,这也是项目经理们常用的,我们一些新入行的小白可能不怎么知道,有一些老人也不怎么会告诉,今天小编就给大家普及一下: 第一位的,当然就是甘特图了(甘特图的画法,项目 ...

  4. 转载vSphere部署系列之10——虚拟机模板和规范

    vSphere部署系列之10--虚拟机模板和规范 在前面的博文章节中,已搭建了群集,并启用了HA和DRS,但还没有划分资源池,这种情况已经可以应付实际生产环境.资源池的创建和配置比较简单.难点在对配额 ...

  5. 【AI简报20210604期】意法半导体收购Cartesiam、10个顶级开源AI项目分享

    嵌入式 AI 1. 嵌入式AI创新峰会万字干货,16位大咖演讲精华 原文链接: http://news.idcquan.com/scqb/186972.shtml GTIC 2021嵌入式AI创新峰会 ...

  6. 在Visual Studio 2010中创建多项目(解决方案)模板【三】

    前文回顾: 在Visual Studio 2010中创建多项目(解决方案)模板[一]:多项目解决方案模板的创建 在Visual Studio 2010中创建多项目(解决方案)模板[二]:Templat ...

  7. python项目-推荐 10 个有趣的 Python 练手项目

    想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...

  8. 推荐 10 个有趣的 Python 项目

    想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼,因此,我为大家准备了10个 ...

  9. vs2019中如何创建qt项目_在VS2015中创建Qt项目【VS+Qt项目开发系列】(二)

    在VS2015中创建Qt项目[VS+Qt项目开发系列](二) 发布时间:2018-04-20 22:44, 浏览次数:1269 , 标签: VS Qt 在上一篇[VS+Qt项目开发](一)在VS201 ...

最新文章

  1. 深度学习之Pytorch基础教程!
  2. linux下mysql日志配置_Linux下MySQL 5.5.21 服务器日志配置
  3. 【CVPR2020】目标检测方向论文更新
  4. 杨氏干涉的模拟的MATLAB仿真
  5. 三元表达式 列表递推 生成器表达式
  6. 【在路上4】在派件时效分析中剥离有效因素
  7. 155个建议笔记--建议33:不要覆写静态方法
  8. 从word得到表格数据插入数据库(6位行业代码)
  9. linux刷新jdk,Linux安装更新JDK
  10. 如果没有英语,计算机,如果有一天没有电脑(英语作文)
  11. 【OpenCV学习笔记】【函数学习】十九(感兴趣区域)
  12. OpenCASCADE Expression Interpreter by Flex Bison
  13. .Net6项目部署IIS步骤
  14. NDK学习笔记:线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)
  15. 循环switch 变量x 如果case a 车辆型号查询系统官网,车辆型号怎么去查询?
  16. cad图形不见了怎么办_CAD软件常见问题解答,CAD中的工具栏不见了怎么办?如何清理图形...
  17. 实在不行来瓶敌敌畏吧!Scrapy框架爬取某农药肥料网站+异步Mysql数据库存储
  18. [DeFRCN] Decouple Faster R-CNN for Few-Shot Object Detection(ICCV 2021)
  19. 在线pdf转换成word文档的方法
  20. linux系统文件夹

热门文章

  1. Waymo Open Dataset 数据集(CVPR 2020)
  2. C++实现的Buffer类
  3. ImageExpert
  4. 整存整取的文档设计[by absolutezero]
  5. 数组操作(栈方法、队列方法、重排序等)
  6. Bugku-杰瑞的下午茶
  7. 如何开启windows xp文件、文件夹的安全选项卡
  8. 企业级前端项目组框架vue-fpg介绍
  9. 爬了深圳3W+二手房我发现了这些秘密
  10. Android NDK开发配置NDK