返回   cpper编程论坛 > Zion/测试
注册账号 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记版面已读

Zion/测试 惹人烦的东西这边来

回复
 
LinkBack 主题工具 显示模式
  #1 (permalink)  
旧 2004-01-23
高级会员
 
注册日期: 2003-08-02
帖子: 105
koolplay 正向着好的方向发展
默认 DECLARE_SERIAL和IMPLEMENT_SERIAL两个宏怎么没有重载<<和

书上一个例子说明了如何序列化,但是书上没有使用DECLARE_SERIAL和IMPLEMENT_SERIAL两个宏,而是用了DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE两个宏,另外在一个从CObject继承过来的类定义中重载了<<和>>。我看《深入浅出MFC》中说DECLARE_SERIAL和IMPLEMENT_SERIAL能重载这2个符号,于是就用了这2个宏而没有重载<<和>>。结果编译时在<<和>>的地方出错了,提示说没有定义过这样的运算。于是我又重载了<<和>>,就编译通过了,而且运行得也正确。这样看来SERIAL和DYNCREATE没有什么区别了嘛,还是要自己重载<<和>>。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #2 (permalink)  
旧 2004-01-23
abp 的头像
abp abp 当前离线
高级会员
 
注册日期: 2002-08-30
帖子: 811
abp 正向着好的方向发展
默认

那我问你,DECLARE_SERIAL和DECLARE_DYNAMIC究竟做了些什么,你知道吗?或者说,这两个DECLARE_****究竟是C++语言里面的什么语言要素,你知道吗?
你先告诉我们这个吧,我们再帮你解决问题。
(各位兄弟,这个问题我来帮他解决,就不劳你们了。)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #3 (permalink)  
旧 2004-01-27
高级会员
 
注册日期: 2003-08-02
帖子: 105
koolplay 正向着好的方向发展
默认

DECLARE_DYNAMIC是MFC最基本的精髓,即建立一张消息映射表。DECLARE_DYNCREATE包含了DECLARE_DYNAMIC,但更进一步,使类的永久化成为可能。DECLARE_SERIAL包含了DECLARE_DYNCREATE,但把序列化悄悄地放进了宏里了。我可能对这些宏的理解不够准确,请大家指教。但我问的问题是涉及DECLARE_SERIAL和DECLARE_DYNCREATE关系的,我看有了DECLARE_DYNCREATE就已经可以序列化了,但是要自己添加序列化的函数,而且如果愿意的话还要重载<<>>。但用《深入浅出MFC》的话说DECLARE_SERIAL是为了将<<和>>2个运算符重载,还要让Serialize函数神不知鬼不觉地放入类声明中。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #4 (permalink)  
旧 2004-01-27
abp 的头像
abp abp 当前离线
高级会员
 
注册日期: 2002-08-30
帖子: 811
abp 正向着好的方向发展
默认

引用:
作者: koolplay
DECLARE_DYNAMIC是MFC最基本的精髓,即建立一张消息映射表。DECLARE_DYNCREATE包含了DECLARE_DYNAMIC,但更进一步,使类的永久化成为可能。DECLARE_SERIAL包含了DECLARE_DYNCREATE,但把序列化悄悄地放进了宏里了。我可能对这些宏的理解不够准确,请大家指教。但我问的问题是涉及DECLARE_SERIAL和DECLARE_DYNCREATE关系的,我看有了DECLARE_DYNCREATE就已经可以序列化了,但是要自己添加序列化的函数,而且如果愿意的话还要重载<<>>。但用《深入浅出MFC》的话说DECLARE_SERIAL是为了将<<和>>2个运算符重载,还要让Serialize函数神不知鬼不觉地放入类声明中。
我需要的不是这样的答案,譬如说,如果我问你std::max是干什么的,我希望你告诉我:std::max是
代码:
template<class _Ty> inline const _Ty& _MAX(const _Ty& _Left, const _Ty& _Right) { // return larger of _Left and _Right return (_Left < _Right ? _Right : _Left); }
而不是对我说,std::max返回两个参数中大的那个。
虽然可能后者比较好看,但是前者对于一个程序员来说,比较能够说明问题。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #5 (permalink)  
旧 2004-01-28
高级会员
 
注册日期: 2003-08-02
帖子: 105
koolplay 正向着好的方向发展
默认

你是想问我知不知道2个宏扩展出来后是什么东西吗?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #6 (permalink)  
旧 2004-01-28
abp 的头像
abp abp 当前离线
高级会员
 
注册日期: 2002-08-30
帖子: 811
abp 正向着好的方向发展
默认

引用:
作者: koolplay
你是想问我知不知道2个宏扩展出来后是什么东西吗?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #7 (permalink)  
旧 2004-01-30
高级会员
 
注册日期: 2003-08-02
帖子: 105
koolplay 正向着好的方向发展
默认

这个还是知道点的,《深入浅出MFC》第98、112、129有原型。字太多,就不打出来了
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #8 (permalink)  
旧 2004-01-30
abp 的头像
abp abp 当前离线
高级会员
 
注册日期: 2002-08-30
帖子: 811
abp 正向着好的方向发展
默认

引用:
作者: koolplay
这个还是知道点的,《深入浅出MFC》第98、112、129有原型。字太多,就不打出来了
你觉得很麻烦。那么按照你的意思,我给你解释的话,就应该是我打出来给你看了?是不是我打字比较快,不麻烦?
而且,难道这个定义是在书上的吗?你的VC编译代码的时候,会把深入浅出MFC也包含进去?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
回复

书签
主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为格林尼治时间 +9。现在的时间是 07:29 AM


Powered by vBulletin® 版本 3.7.0
版权所有 ©2000 - 2008,Jelsoft Enterprises Ltd.
(C) Copy Right All Right Reserved 2001 - 2007

Search Engine Friendly URLs by vBSEO 3.1.0