请问定义全局变量在那里定义阿?我在一个对话框类CDialog1的
.cpp文件中定义了一个
CString str1("");
但是编译后有错

void CDialog1::OnButton1() 
{
// TODO: Add your control notification handler code here GetDlgItemText(IDC_EDITA,str1);
}处
编译器说error C2065: 'str1' : undeclared identifier

解决方案 »

  1.   

    CString str1("");
    void CDialog1::OnButton1() 
    {
    // TODO: Add your control notification handler code here GetDlgItemText(IDC_EDITA,str1);
    }这样就没问题了。呵呵。仔细想想。
      

  2.   

    也可以定义在 你的  CXXApp 中
    访问时用 ((CXXApp*)AfxGetApp())->m_strVal
      

  3.   

    我不知道你的全局变量,想怎么用,如果是在对话框中用,你在对话框的头文件中定义,如果是应用程序类的全局变量,可以在应用程序类的.h中声明,在应用程序类的.cpp中定义.你可以看看在theApp(你搜索 一下在你的工程中)定义和声明的地方的,声明的地方加入CString str1;就可以了,不用使用CString str1("");
      

  4.   

    再详细说明一下:
    全局变量的声明和定义
    声明是说明一个变量的类型,.h文件中
    定义是说明一个变量的实际要分配的大小,在.cpp文件中
    如果你要定义成全局的,必须在应用程序的头文件中使用extern声明,theApp的声明和定义如下:
    (你可以搜索你自己工程内的theApp)
    //.h文件中
    extern CKeyPlusApp theApp;//.cpp文件中
    CKeyPlusApp theApp;
    你可以在下面改成你要的
    //.h文件中
    extern CKeyPlusApp theApp;
    extern CString str1;//.cpp文件中
    CKeyPlusApp theApp;
    CString str1("");
      

  5.   

    谢谢大家
    我照2楼的方法做了,果然可以,为什么啊?我初学vc,希望能讲解一下
    但是我这样做了难道不能在view类中用这个全局变量吗?我在view类中加了下面的代码void CDialog2::OnButton2() 
    {
    // TODO: Add your control notification handler code here GetDlgItemText(IDC_EDITB,str2);
    }
    结果又出错了
    C:\Documents and Settings\123\桌面\全局变量方法\fffView.cpp(132) : error C2065: 'str1' : undeclared identifier
      

  6.   

    谢谢大家的讲解,尤其是 missle(闪人) 
    不过我始终不明白为什么按照2楼的做法也行呢?
    还有,小弟我初来乍到,怎么给分阿?
      

  7.   

    二楼的做法也是一样的,他是在你当前的文件内部定义了一个全局变量,但这不是一个很好的做法,因为由于没有申明,在除了你定义这个全局变量的其他任何文件内(.h和.cpp),你都不可以访问这个str,因为没有声明,
    你也象二楼那样做,然后在项目文件的.h文件中使用
    extern Cstring str;来声明,这样做法就和我的一样了,
    重要的不是定义的地点,而是申明的地方,因为在vc自动生成的文件中,都会自动include你项目的.h文件,所以......
    extern是说明, 后面定义的变量是一个外来的变量,不是.cpp内部的变量(来自于另外的.cpp文件定义的变量)
    建议楼主找本c的书看看,这年 头,象我这么老实的人不多了,.
    寒...........