本版专家分:0
结帖率:100%楼主 发表于: 2013-03-05 23:01:41
DEClARE_DYNAMIC是为了确定运行时对象属于哪一个类而定义的宏,。
declare_dyncreate/IMPLEMENT_DYNCREATE是为了“动态创建"类的实例而定义的宏。new可以用来创建对象,但不是动态的。比如说,你要在程序中实现根据拥护输入的类名来创建类的实例,下面的做法是通不过的:
charszClassName[60];
cin>>szClassName;
CObject*pOb=newszClassName;//通不过
这里就要用到declare_dyncreate/IMPLEMENT_DYNCREATE定义的功能了。
分享到:
| 举报 |
编辑 删除
管理 回复次数:2本版等级:
本版专家分:12472
结帖率:0%得分:60 回复于: 2013-03-05 23:27:16
框架中一个用处是与DECLARE_SERIAL配合,可以将支持动态创建的CObject类对象序列化到文件,这时会在文件中保存类名Cfoo等信息
程序打开时,可以反序列化文件,读出类名Cfoo,CRuntimeClass(“Cfoo”)->CreateObject生成对象,恢复程序状态
| 举报 |
编辑 删除
管理本版等级:
本版专家分:0
结帖率:100%得分:0 回复于: 2013-03-06 15:08:40
序列化要动态创建啊!!!!
引用1楼wocow3的回复:框架中一个用处是与DECLARE_SERIAL配合,可以将支持动态创建的CObject类对象序列化到文件,这时会在文件中保存类名Cfoo等信息
程序打开时,可以反序列化文件,读出类名Cfoo,CRuntimeClass(“Cfoo”)->CreateObject生成对象,恢复程序状态
| 举报 |
编辑 删除
管理以上就是关于declare_dyncreate的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shenmilingyu/article-15562-1.html
正是开战的最好时节