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

【上位机——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;
}

相关文章:

  • C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟
  • git比较不同分支的不同提交文件差异
  • Linux-网络基础
  • mindspeed-rl使用注意事项
  • 【ESP32】【微信小程序】MQTT物联网智能家居案例
  • Nginx下搭建rtmp流媒体服务 并使用HLS或者OBS测试
  • 相机标定(输出相机内参和畸变参数)
  • 前端实现数据导出成excel
  • RIP动态路由(三层交换机+单臂路由)
  • 【Markdown】【HTML】在Markdown中实现康奈尔笔记模式(右侧留白)
  • 百度暑期实习岗位超3000个,AI相关岗位占比87%,近屿智能携AIGC课程加速人才输出
  • ASP.NET Core 分层项目中EFCore的使用
  • 完美解决Microsoft Edge浏览器无法同步/一直在同步中/更新失败等问题
  • 神经网络直接逆控制:神经网络与控制的结合入门级结合
  • 【C#】.net core 6.0调用MVC API接口时,提示Unsupported Media Type,状态码415
  • 穿透数据迷雾:PR 曲线与 ROC 曲线的深度剖析+面试常见问题及解析
  • spring security +kotlin 实现oauth2.0 认证
  • 加油站小程序实战教程12显示会员信息
  • 【Django】设置让局域网内的人访问
  • 忽略 CS8616 警告在 Visual Studio 2022 中【C# 8.0 】
  • 西安雁塔区委书记王征拟任市领导班子副职,曾从浙江跨省调任陕西
  • 安徽一季度GDP为12265亿元,同比增长6.2%
  • 全球安全倡议提出三周年,外交部介绍有关情况
  • 广西通报桂林、贵港、玉林三市应对不力:管不住山火和露天焚烧
  • 国开行原副行长李吉平一审获刑14年
  • 马上评|治理“龟速车”,也是一次驾驶文明的升级