标题:求助:extern一个类的全局变量,类成员不能更改
只看楼主
bacchae
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-10-17
结帖率:0
已结贴  问题点数:20 回复次数:4 
求助:extern一个类的全局变量,类成员不能更改
我自己定义了一个类,然后在app.h里申明:extern Cmyclass *globe;再在app.cpp里定义:Cmyclass *globe = new Cmyclass;
这样我设置了globe这个全局变量,编译运行都没有问题。但是现在我只要增加或删除Cmyclass的成员,编译通过没有报警,可是一执行就崩溃。回复到原来的类成员就又正常了。
直觉是链接器没有更新我的这个类。我已经把debug文件夹以及.ncb, .APS, .opt什么的都删了,我实在想不出还有什么地方留下了原来那个类的痕迹。
我在网上找了两天帖子了,只有一句提到过类似的问题,也是语焉不详。
请编程论坛的大侠帮忙看看
搜索更多相关主题的帖子: extern 变量 全局 成员 
2010-10-17 17:27
taiyang0331
Rank: 2
等 级:论坛游民
帖 子:35
专家分:20
注 册:2008-9-24
得分:10 
我自己定义了一个类,然后在app.h里申明:extern Cmyclass *globe;
再在app.cpp里定义:Cmyclass *globe = new Cmyclass

 app.h 中的 extern Cmyclass *globe 不要
2010-10-18 11:04
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:10 
什么意思?已经把debug文件夹以及.ncb, .APS, .opt什么的都删了 与这个有关系吗???

然后在app.h里申明:extern Cmyclass *globe;再在app.cpp里定义:Cmyclass *globe = new Cmyclass;


你为什么要这么写呢 有什么特殊的意义吗?
2010-10-18 16:19
bacchae
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-10-17
得分:0 
在app.h里申明extern Cmyclass *globe即是申明全局变量,然后在某一处定义它。这是在网上看到的全局变量设置方法,现在所有include app.h过的里都可以访问到globe。
现在的问题是只能在myclass.h里保持原来数量的成员,多一个少一个都不行(编译能通过,运行即错误)。
所以删掉了除源码和工程以外的文件,看看能不能去掉对Cmyclass的“记忆”,可还是不行。
2010-10-18 17:04
bacchae
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-10-17
得分:0 
哦~~~搞定了,天哪~~~
我犯了个低级错误,原来是:我有一个dll,是另起工程做得,它使用了原来的Cmyclass定义,重新编译这个dll就好了
2010-10-18 20:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-323173-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.556316 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved