菜鸟请教,这段代码是什么语法?

biliky 2012-01-17 02:05:48
#define IMPLEMENT_DYNCREATE(base_class_name,class_name,class_id_type,class_id) \
XMLRuntimeClass<base_class_name,class_id_type>* class_name::GetRuntimeClass() const { return &class_name::class##class_name; }


哪位大侠能否解释一下,最后的return语句是什么意思?
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_adintr_com 2012-01-17
  • 打赏
  • 举报
回复
## 表示连接
比如 #define X(a, b) a##b
然后 X(1, 2) 就得到 12, X(abc, 3) 就得到 abc3
如果没有 ## 的话 #define X(a, b) ab 无论什么 X(1, 2) 或什么结果都是 ab
biliky 2012-01-17
  • 打赏
  • 举报
回复
楼上大侠,请问##是什么语法啊?从来没见过,没见书上有介绍。
priest334 2012-01-17
  • 打赏
  • 举报
回复
#define IMPLEMENT_DYNCREATE(base_class_name,class_name,class_id_type,class_id) \
XMLRuntimeClass<base_class_name,class_id_type>* class_name::GetRuntimeClass() const { return &class_name::class##class_name; }

就是一个宏定义,不要裂解得太复杂了

IMPLEMENT_DYNCREATE(CParent, CChild, DWORD, ID_CLASS) ===>

XMLRuntimeClass<CParent,DWORD>* CChilde::GetRuntimeClass() const
{
return &CChild::classCChild;
}
biliky 2012-01-17
  • 打赏
  • 举报
回复
我想知道return语句是什么意思。


IMPLEMENT_DYNCREATE不是MFC的宏,只是模仿MFC命名。
GIS_wudi 2012-01-17
  • 打赏
  • 举报
回复
这就是一个复杂的宏定义
这个宏实质是实现了一个函数的功能
qualcode 2012-01-17
  • 打赏
  • 举报
回复
IMPLEMENT_DYNCREATE(class_name,base_class_name)
  说明:
  通过DECLARE_DYNCREATE宏来使用IMPLEMENT_DYNCREATE宏,以允许CObject派生类对象在运行时自动建立。主机使用此功能自动建立对象,例如,但它在串行化过程中从磁盘读取一个对象时,他在类工具里加入IMPLEMENT_DYNCREATE宏。若用户使用DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE宏,那么接着使用RUNTIME_CLASS宏和CObject::IsKindOf成员函数以在运行时确定对象类。若declare_dyncreate包含在定义中,那么IMPLEMENT_DYNCREATE必须包含在类工具中。
liujun_ips 2012-01-17
  • 打赏
  • 举报
回复
难道是内部类?引用

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧