动态创建类的对象
2012-10-30 18:58
211 查看
#include <iostream> #include<string> using namespace std; class CObject; ///类信息表结构 struct CRuntimeClass { char* m_lpszClassname ; //类名 CObject* (_stdcall *m_pfnCreateObject)(); ///对象构建函数指针 CObject* _stdcall CreateObject(); ///对象构建函数的声明 }; //CObject类声明及实现 class CObject { public : virtual void SayHello() {cout<<"Hello CObject \n";} }; ///派生类Myclass及实现 class Myclass : public CObject { public: virtual void SayHello() {cout<<"Hello Myclass\n";} public: ///对象动态创建的声明 static CRuntimeClass classMyclass; //定义CRuntimeClass变量作为信息表 static CRuntimeClass *GetRuntimeClass();//获得信息表指针的函数 }; ///动态创建的实现 ///对象构建函数的实现 CObject* _stdcall CreateObject() { return new Myclass; } ///填写信息表 CRuntimeClass Myclass::classMyclass = {"Myclass" , CreateObject}; ///获得类信息表指针函数的实现 CRuntimeClass * Myclass::GetRuntimeClass() { return &Myclass::classMyclass ; } ///主函数 void main() { char _lpszCLS[10]; cout<<"请输入类名: "; cin>>_lpszCLS; CRuntimeClass * p = Myclass::GetRuntimeClass (); if(!strcmp(p->m_lpszClassname , _lpszCLS)) { CObject* _stdcall pp = p->m_pfnCreateObject(); pp->SayHello (); } else { cout<<"NO"<<endl; } }
![](http://img.my.csdn.net/uploads/201210/30/1351594978_7542.png)
![](http://img.my.csdn.net/uploads/201210/30/1351595005_3521.png)
相关文章推荐
- javascript---使用createElement动态创建HTML对象.窗体传值
- 利用Java反射机制和Javassist实现Java对象及其属性的动态创建生成
- js:对象的创建(基于组合和动态原型)
- c++动态加载dll中的类(用于实现依据字符串类名创建对象)
- C#如何根据字符串动态的创建对象(类)?
- 【Java进阶-Java动态代理与AOP】03 创建动态类的实例对象及调用其方法
- 在Unity3D中动态创建对象和创建Prefab原型对象的三种方式
- C++ 用new动态创建对象
- Silverlight动态创建XAML对象和遍历对象
- VB程序中用ADO对象动态创建数据库和表
- 从零开始学C++之模板(四):用模板实现单例模式、模板方式实现动态创建对象
- Bolt界面引擎元对象(UIObject)的动态创建
- 动态创建对象与delete 使用
- C#利用反射动态创建对象
- 反射机制(2)动态创建并调用对象
- 利用反射动态创建对象
- 动态创建对象
- 动态创建对象DECLARE_DYNCREATE(DECLARE_DYNAMIC/DEClARE_DYNAMIC)
- .net中实现运行时从字符串动态创建对象
- Thinking in C++ 第十三章 动态对象创建