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

需求背景:

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

解决方案:

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() { }
};

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值