又有一个关于静态变量的问题,比如:我在CAbcDlg这个类下有一个公共变量CString username,我把它定义成static CString username之后,在CBcdDlg中引用这个变量,但此时CAbcDlg已经关闭(窗口被消灭了)这是引用,总是出错:'CAbcDlg' : illegal use of this type as an expression并且在定义了static CString username之后username这个变量就找不到了??请大家帮忙!!谢谢

解决方案 »

  1.   

    CString auser = CAbcDlg::username;
      

  2.   

    楼上的高手,这样做好象不行,因为username在CAbcDlg中并不是静态变量,在CAbcDlg消灭后再引用,就有如下错误:error C2597: illegal reference to data member 'CEnterDlg::m_userid' in a static member function
    error C2593: 'operator =' is ambiguous
      

  3.   

    定义成全局变量。
    在用到该变量的类中声明该变量
    //a.cpp
    int globe_a;
    class a
    {
     ......
    }在b.cpp中你要用到globe_a的值
    //b.cpp
    extern int globe_a;
    class b
    {
    }
      

  4.   

    楼主一会儿说:“我在CAbcDlg这个类下有一个公共变量CString username,我把它定义成static CString username”
    一会儿又说:“因为username在CAbcDlg中并不是静态变量”
    ------->>>>>>>
    啥意思?????
      

  5.   

    静态变量要在类的cpp文件里声明一下才能用,否则用的时候是编译报错的。
    如果在CAbcDlg这个类下有一个公共变量CString username;
    则这样,在abcdlg.cpp,的CAbcDlg的构造函数外。加上
    CString CAbcDlg::username = "";其他地方就可以CAbcDlg::username 直接访问了。