当前位置: 首页 > ai >正文

【上位机——MFC】运行时类信息机制

运行时类信息机制的使用

  1. 类必须派生自CObject
  2. 类内必须添加声明宏DECLARE_DYNAMIC(theClass)
  3. 3.类外必须添加实现宏 IMPLEMENT_DYNAMIC(theClass,baseClass)

具备上述三个条件后,CObject::IsKindOf函数就可以正确判断对象是否属于某个类。

代码示例

#include <afxwin.h>
#include <iostream>using namespace std;class CAnimal : public CObject {DECLARE_DYNAMIC(CAnimal)};
IMPLEMENT_DYNAMIC(CAnimal,CObject)class CDog : public CAnimal {DECLARE_DYNAMIC(CDog)};
IMPLEMENT_DYNAMIC(CDog, CAnimal)int main() {CDog yellowdog;// 判断yellowdog 这个类是不是CDog这个类//if (yellowdog.IsKindOf(RUNTIME_CLASS(CAnimal))) {if (yellowdog.IsKindOf(RUNTIME_CLASS(CDog))) {cout << "yellowdog is CDog" << endl;}else {cout << "yellowdog is not CDog" << endl;}return 0;
}

动态创建机制的使用

在不知道类名的情况下,将类的对象创建出来。

  1. 类必须派生自CObject
  2. 类内必须添加声明宏 DECLARE_DYNCREATE(theClass)
  3. 类外必须添加实现宏 IMPLEMENT_DYNCREATE(theClass,baseClass)

当一个类具备上述三个条件后,CRuntimeClass::CreateObject()对象加工厂函数就可以将类的对象创建出来。

代码示例

#include <afxwin.h>
#include <iostream>using namespace std;class CAnimal : public CObject {DECLARE_DYNAMIC(CAnimal)};
IMPLEMENT_DYNAMIC(CAnimal, CObject)class CDog : public CAnimal {DECLARE_DYNCREATE(CDog)};
IMPLEMENT_DYNCREATE(CDog, CAnimal)int main() {CObject* pob = RUNTIME_CLASS(CDog)->CreateObject();if (pob) {cout << pob << endl;} else {cout << "faile" << endl;}return 0;
}
http://www.xdnf.cn/news/808.html

相关文章:

  • # 05_Elastic Stack 从入门到实践(五)
  • Kafka 在小流量和大流量场景下的顺序消费问题
  • Spring MVC DispatcherServlet 的作用是什么? 它在整个请求处理流程中扮演了什么角色?为什么它是核心?
  • 平板电脑做欧盟网络安全法案(EU)2022/30
  • 人工智能100问☞第9问:什么是AI芯片?
  • 形象理解华为云物联网iotDA开发流程
  • MYSQL之慢查询分析(Analysis of Slow MySQL Query)
  • PyCharm 初级教程:从安装到第一个 Python 项目
  • 基于ueditor编辑器的功能开发之重写ueditor的查找和替换功能,支持滚动定位
  • 链式栈和线性栈
  • WebForms Validation
  • Spark SQL核心解析:大数据时代的结构化处理利器
  • 【基于WSAAsyncSelec模型的通信程序设计】
  • 云原生与AI的关系是怎么样的?
  • Jinja2 内置变量和函数详解
  • VScode-py环境
  • 【JS】计算任意字符串的像素宽度(px)
  • VR、AR、互动科技:武汉数字展馆制作引领未来展览新体验
  • 单例模式(线程安全)
  • Docker Compose 使用实例
  • 【漫话机器学习系列】214.停用词(Stop Words)
  • 查看MAC 地址以及简单了解
  • CHAPTER 11 A Pythonic Object
  • 定期检查滚珠丝杆的频率是多久?
  • Rust: 从内存地址信息看内存布局
  • OpenCV 图形API(44)颜色空间转换-----将图像从 BGR 色彩空间转换为 RGB 色彩空间函数BGR2RGB()
  • XMC4800 芯片深度解读:架构、特性、应用与开发指南
  • OpenCV中的图像旋转方法详解
  • 特征选择与类不平衡处理
  • aws服务--S3介绍使用代码集成