一个很奇怪的由于全局变量出现的问题

shiweifu 2009-02-19 09:07:10
项目中有三个文件,一个是Main.cpp,一个Login.cpp,一个public.h
(Main和Login是两个窗体)
public.h中定义了几个全局变量:
#include <string>
#include <vector>
using std::string;
using std::vector;
vector<CTest*> xLst;

在Main.h和Login.h中都分别加了#include "public.h"语句,并都用extern声明了以上几个全局变量。
在Login中,调用xLst的push_back往里添加对象指针,添加成功,在Login中访问xLst中的元素,无任何问题
而通过Login的窗口创建Main之后,在Main中可以正常访问xLst,但显示里面没有元素。。而内存地址和Login中的xLst内存地址是一样的,说明访问的是全局对象。。请问这是怎么回事。。
...全文
109 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gu302 2009-02-23
  • 打赏
  • 举报
回复
C++中 静态变量 有两中 一中是加了static修饰的 一种没加 加了的可以在整个工程中使用 而没加的 只能在声明它的文件中使用 楼住要注意这点
mrzhjy 2009-02-20
  • 打赏
  • 举报
回复
C++Builder中建议用extern PACKAGE 来申明全局变量,就不会出现访问内容不一致的情况.
ydlchina 2009-02-20
  • 打赏
  • 举报
回复
没明白
wesleyluo 2009-02-19
  • 打赏
  • 举报
回复

不可能,内存地址一样,但是内容不一样?

除非是你在MAIN 中调用之前把它清除掉了,或者是其他操作把它清除了。

xjq2003 2009-02-19
  • 打赏
  • 举报
回复
定义个MAIN里面的 PUBLIC变量,好了
shiweifu 2009-02-19
  • 打赏
  • 举报
回复
不应该啊。。一共就那几个文件。。
我不懂电脑 2009-02-19
  • 打赏
  • 举报
回复
检查其他文件有没有extern 外部变量。
你可以手工放置看看。
shiweifu 2009-02-19
  • 打赏
  • 举报
回复
就是。。在一个文件中,对一个全局变量进行操作,而在另外那个文件中,可以正常访问到该全局变量,但该操作没生效
fairchild811 2009-02-19
  • 打赏
  • 举报
回复
语文学的太差,稍微有点没看明白

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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