大家好,先声明我是一位女生,如果提的问题太弱,是不是可以不笑话我?首先定义了一个类CStation,成员 int m_stindex;CString m_stname
先问一个初级问题,我在globle里声明了CStation ststatus[27],为什么在对话框类CDlgZone里使用ststatus[0].m_stname,编译时报错找不到ststatus[0]?还是不太理解“globle",哪位大虾能给解释一下,不胜感激。

解决方案 »

  1.   

    在对话框类里加上以下语句 :extern CStation   ststatus[27];关于Global的东西,不是VC的内容,先学好C语言吧。
      

  2.   

    这就要看CStation   ststatus[27],在哪定义的,如果跨CPP文件,要用extern关键字
      

  3.   

    这是c语言的基础语法,和VC无关
    不过,能感觉VC是海洋说明已经入门了。很多人都认为VC太差,不如这个,不用听他们的。上善若水顺便一说,从编程风格来看,尽是少用global变量,global数组就更危险了。
    一般常用的方法:可以写一个CStationList的类,在这个类里面处理数组。然后在CDlgZone时面调用CStationList类对象。
    如果你的数组在其他类里也用,那就声明CStationList为单件模式,加一个静态函数。词语表达好象很高深,提到什么模式,其实只要你理解 静态函数概念,很容易就知道怎么写的。
    如果项目比较紧,没空研究c++,那可以声明一个CStationList的global变量,这样总比声明一个数组好一些。再次提醒,c语言中的几个易混概念:全局函数,全局变量,静态函数,静态变量(外部静态变量和局部的) ,(有的书把全局也称为外部) 找本书一定要把这几个弄清楚李。如果学c++,还要理解类的成员变量,类的成员函数,类的静态成员变量,类的静态成员函数。看起来很头痛,但不搞清楚很难深入下去。
      

  4.   

    要先初始化 也就是要对数组分配内存
    CString   m_stname; 
    m_stname ststatus[] = new m_stname[27];
    for(int i=0;i<26;i++)
     ststatus[i] = new m_stname();
      

  5.   

    hahaxj    好人哪   !!
      

  6.   

    不要把女同志都吓跑了,以后咱们CSDN的兄弟可都是光棍了哦
      

  7.   

    在使用了这个变量的文件里,加上全局变量的声明。
    extern CStation ststatus[27]; 
    一般会把extern声明放在函数外边。这样声明的东西从声明位置开始到这个编译单元结束都可以用。
      

  8.   

    这几天出差了,感谢大家的解答。
    我是一个VB程序员,现在想用VC,感觉真难啊,不像在VB里,点几个控件,在控件里编几个程序就可以了。另外非常感谢sxcong的解答。