【发布时间】:2015-09-03 14:46:46
【问题描述】:
我想通过它们的运行时类来映射我的对象...或将它们与它们的运行时类相关联的某个唯一 ID。我不会硬编码数据(例如:CObject = 2,CObjectEx = 3)
CRuntimeClass 具有 m_lpszClassName 和 m_wSchema(m_wSchema 仅用于 Implement_Dynamic 类,并且我有很多架构为 0 的串行类,所以这不起作用)。 GetRuntimeClass() 返回的 CRunTimeClass* 可能是唯一键?
所有 CMyInheritedObject 类型的 CObject 是否都返回完全相同的指向 CRuntmeClass 对象的指针?因此我可以使用 CRuntimeClass* 作为相同类型的所有类的唯一键?
【问题讨论】:
-
我可以使用 CObject::GetRuntimeClass() 返回的 CRuntimeClass* 作为键来按类映射对象。
-
其实CRuntimeClass::m_wSchema只用于使用IMPLEMENT_SERIAL实现的类。它指定序列化格式的版本,当流式传输到
CArchive或读回时。IMPLEMENT_SERIAL 需要IMPLEMENT_DYNCREATE,以允许从CArchive流式传输对象。