- 方法一
在StdAfx.cpp中定义,如int gd_nMyGlobal = 0,在StdAfx.h中extern int gd_nMyGlobal。
放在头文件中,如果由cpp文件多次include该头文件,则编译器认为全局变量定义多次。可能会导致错误,所以放到.cpp 中。
- 方法二
放到theApp的类中,作为theApp的成员变量,调用的时候(CMyApp*)AfxGetApp()->m_nMyGlobal。
- 方法三
写一个公共类,用静态变量和静态函数实现
静态变量和静态函数有如下性质:
- 若在一个类中用关键字static声明数据成员,则这个数据成员就只存在一个拷贝,无论该类创建了多少个实例,它始终只存在一个,即使该类的实例一个也没创建,它也存在。
- 若在一个类中用关键字static声明函数,该函数可以用“类名::函数名”方式访问,无需引用该类的实例,甚至这个类的实例可以不存在。
利用这个性质实现的全局变量和函数使用起来很方便。值得注意的是,全局变量和全局函数最好集中封装,不要在文档、视图等类内部定义,这样用起来才有全局的感觉。
例:
- 添加一个没有基类的新类,设类名起为CPublic,姑且称之为公用类
单击“Insert”菜单下的“New Class”命令,选择“Class type”为“Generic Class”,在“Name”栏中填入类名“CPublic”,单击“OK”,则新类建立完毕。
- 包含公用类的头文件,使各个类都能访问它