一个基于对话框的项目,后来我新添了一个用于数据管理的类。为了给这个类设定一个全局的变量,以使其它的各个对话框资源均可方便地调用。我就在程序类头文件中把这个数据类的头文件include进去(这下没出问题),然后就在程序类头文件中给数据类构造全局对象(因为所有项目文件都是include 程序类头文件的,我想把全局变量放在程序类头文件中是合适的吧),然后就链接不通过。我该如何是好呢?求教!!!

解决方案 »

  1.   

    在实现文件(.cpp/.c)定义变量
    Class var;
    然后在头文件声明变量,在其它要用到的单元中include头文件就可以了
    extern Class var;
      

  2.   

    step 1:
    在xx.cpp中类的外面定义全局变量,如: UINT m_Value=0;
    step 2:
    在stdAfx.h中用extern UINT m_Value
    step 3:
    接分
      

  3.   

    可以在stdafx中包含该头文件,同时声明一个该类的全局变量,在CXXXAPP::InitInstance里面初始化该全局变量。
      

  4.   

    在产生新类的头文件时,已自动把程序类的头文件及stdafx.h包含到cpp文件中,不撤消包含可以吧
      

  5.   

    嗯,你可以试试看,
    其实还有一个方法,就是作为CXXXApp的成员变量,InitInstance里面初始化,这样就可以使用theApp这个全局变量访问了
      

  6.   

    我试过了,怎么好像都不行啊,倒底其中有些什么原理啊。theApp这个全局变量也根本不能使用啊,就是undeclared identifier,其它的方法就总是出现*.obj文件里已定义等错误。是不是那些头文件包含来包含去给搞乱了? 天啊,怎么在VC里设个全局变量都那么麻烦。
      

  7.   

    你要包含CXXXAPP的头文件就可以了。确实在stdafx中定义会发生重复定义的问题
      

  8.   

    有例子源码的给我啊:[email protected]
    谢天谢地了,急死了。
      

  9.   

    不要包含头文件,直接extern就可以了。
    不过,全局变量不是好事情,你会慢慢体会到的。
    你可以改用类的静态变量来实现。
      

  10.   

    嗯,比如说你的程序CXXXApp这个类的头文件为myapp.h
    你在想用theApp这个变量的cpp文件的开头
    加一句
    #include "myapp.h"
    就可以在这个cpp中
    使用theApp了,
    其实你也可以参考theApp的定义;
    一般程序生成的时候都有CXXXApp类
    在xxxApp.h的最后会有一句
    extern CxxxApp theApp;
    在xxxApp.cpp中的构造函数后面会有theApp的声明;
    CxxxApp theApp;
    这样theApp就是全局变量了
      

  11.   

    to: EricHxy(龙真) GS
      

  12.   

    to: AkiraChing(水银) 
    我那个基于对话框的程序没有生成extern CxxxApp theApp;的
    我加上去了也没用,不知道怎么回事
      

  13.   

    将所有全局变量放在应用程序的头文件中,如
    CXXXAPP* pApp = (CXXXAPP *)AfxGetApp();
    pApp->m_XXXX; //m_XXXX为你的全局变量