动态创建1

 

如果把对象保存在文件上,读取的时候就会面临一个问题,如何解析文件中的数据?怎样才能把文件中的数据和具体的型别对应起来?这就是动态创建问题。

 

最直接的想法是给每个类一个编号。假如有三个类,CDuckClass, CCockClass, CMonkeyClass

他们都派生自CRootClass,下面是一种可行的方案。

 

 

但这样做LoadFile必须知道已有的三个类,对它们也就产生了依赖。如果新增一个CFoxClass,就需要新的编号,同时要修改LoadFile代码。

 

如果把创建工作转移到具体的类里面来完成,同时在保存对象时候将类名称写入文件,然后再写入对象数据,那么LoadFile就可以不必知道需要创建一个什么样的类,之要读一个类名,然后调用它的创建函数创建对象就可以了。因此有了下面的做法

 

 

 

 

使用方式:

 

 

这样就做到了动态创建。在实际产品开发中,如果有一个系列的产品需要动态创建,就可以用一个static对象把他们串

在一起,只需要持有CClassType::m_pTheFirst就可以进行查找创建了

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值