• 6885阅读
  • 0回复

使用全局变量的一个方法 [复制链接]

上一主题 下一主题
离线liumingguang
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-01
    此文谨献给那些在学习Qt路上慢慢摸索的新人们,希望大家可以多多交流。
  
    我们可以把所有的全局变量放到一个类里,并且这些变量都是静态变量。例如在externinitial.h
中声明

#include<QString>
#include<QMap>
class Units
{
public:
     static QMap<QString,QString> equip_messagemap;
     static bool start_or_stop;
     static bool if_administrator;
     static bool if_sengmessage;
};
在externinitial.cpp中对这些静态变量进行初始化
(静态变量必须要初始化!!!)
#include "externvariable.h"
QMap<QString,QString> myunits;//
QMap<QString,QString> Units::equip_messagemap=myunits;//这两句是为了初始化equip_messagemap。
bool Units::start_or_stop=false;
bool Units::if_administrator=false;
bool Units::if_sengmessage=false;

通过上面的说明我们就可以在任何.cpp或是.h文件中使用诸如bool a=Units::start_or_stop;或Units::start_or_stop=true了。
前提是必须包含 #include "externvariable.h"
静态变量说明:
(1) 不管一个类的对象有多少个,其静态数据成员也只有一个,由这些对象所共享,可被任何一个对象所访问。
(2) 在一个类的对象空间内,不包含静态成员的空间,所以静态成员所占空间不会随着对象的产生而分配,或随着对象的消失而回收。
(3) 静态数据成员的存储空间的分配是在程序一开始运行时就被分配。并不是在程序运行过程中在某一函数内分配空间和初始化。
(4) 静态数据成员的赋值语句,既不属于任何类,也不属于包括主函数在内的任何函数,静态变量赋初值语句应当写在程序的全局区域中,并且必须指明其数据类型与所属的类名,并用如下

格式:
类型   类名::变量名=值;
快速回复
限100 字节
 
上一个 下一个