【厚积薄发系列】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() { }
};

猜你喜欢

转载自blog.csdn.net/lujiang0120/article/details/80571124
今日推荐