正文

全局范围的语句2006-10-24 13:29:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yourtommy/19679.html

分享到:

最近在学VC++,看那本《深入浅出MFC第2版》。看到第三章,有个模拟RTTI的程序。我看懂后自己编写代码。也像书上一样定义了一大堆的宏,基本上都没什么大问题,除了在一条语句“CCObject::classCCObject.Next = NULL;”上卡壳了。

因为这条语句是在宏定义IMPELEMENT_DYNAMIC(class_name)中,而IMPLEMENT_DYNAMIC的执行是在main之前,也是全局范围中。编译器给我的错误提示是:在"."之前少个";",还有CCObject::classCCObject缺少类型说明。我看那条语句,看了又看,心想“妈的!不就一个类的一个静态对象中的成员变量赋值吗?怎么会错呢?”

于是开始了痛苦的调错经历:。。。。。(省略掉)真是郁闷死我了!!

最后发现:这条语句在预处理展开后是放在全局范围内,全局范围只能声明和定义,不能执行语句。想想真是废话,全局范围的语句给谁执行呢?

然后再看书上的解决方法,作者用的是使用一个只含有构造函数的类声明,然后定义一个这样的类,以需要注册的类的名字为参数进行构造。(详情见原书)
当初看到他的处理方法我觉得真是多此一举,直接执行不就行了吗?现在才发现作者的高明之处。自己水平的烂~~

上面是写给自己看的,用来记住这件事情。我平时写博客都希望能给别人一些信息,来解决和我有一样苦恼的人的烦忧。我平时有问题也用搜索引擎,有的人的博客确实给了我不少帮助。

那么啰嗦其实就是:全局范围不能执行语句,要想执行,调用类的构造方法~~

阅读(2266) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册