C++中利用类名动态创建对象【反射写法】

来源:互联网 发布:康拉德格拉夫钢琴 知乎 编辑:程序博客网 时间:2024/05/20 07:52
  • 首先定义的类A、B等
    类A、B均公有派生于CObject
    类A【B】的定义体中添加DECLARE_SERIAL(A)【B】,类A【B】的源文件中的函数定义体外添加IMPLEMENT_SERIAL(A,CObject,1)【(B,CObject,2)】
  • 动态创建对象的函数【#include待动态创建的类所在的头文件】
    类A、B均公有派生于CObject
    TCHAR *sectionName = _T("AInfo");    TCHAR *className = _T("ClassName");    WCHAR ClassName[256];    ::GetPrivateProfileString(sectionName, className, _T(""), ClassName, 256, _T("C:\\MyConfig.ini"));    CRuntimeClass *pclass = CRuntimeClass::FromName(ClassName);    CObject *p = pclass->CreateObject();    ((A*)p)->show();    delete p;

其中的MyConfig.ini文件中对类名及其标识符做了说明:

[ClassInfo]ClassName="CStudentDTO"[DllInfo]ClassName = "DaoDllName"[AInfo]ClassName="A"[BInfo]ClassName="B"
原创粉丝点击