大家好,先声明我是一位女生,如果提的问题太弱,是不是可以不笑话我?首先定义了一个类CStation,成员 int m_stindex;CString m_stname
先问一个初级问题,我在globle里声明了CStation ststatus[27],为什么在对话框类CDlgZone里使用ststatus[0].m_stname,编译时报错找不到ststatus[0]?还是不太理解“globle",哪位大虾能给解释一下,不胜感激。
先问一个初级问题,我在globle里声明了CStation ststatus[27],为什么在对话框类CDlgZone里使用ststatus[0].m_stname,编译时报错找不到ststatus[0]?还是不太理解“globle",哪位大虾能给解释一下,不胜感激。
不过,能感觉VC是海洋说明已经入门了。很多人都认为VC太差,不如这个,不用听他们的。上善若水顺便一说,从编程风格来看,尽是少用global变量,global数组就更危险了。
一般常用的方法:可以写一个CStationList的类,在这个类里面处理数组。然后在CDlgZone时面调用CStationList类对象。
如果你的数组在其他类里也用,那就声明CStationList为单件模式,加一个静态函数。词语表达好象很高深,提到什么模式,其实只要你理解 静态函数概念,很容易就知道怎么写的。
如果项目比较紧,没空研究c++,那可以声明一个CStationList的global变量,这样总比声明一个数组好一些。再次提醒,c语言中的几个易混概念:全局函数,全局变量,静态函数,静态变量(外部静态变量和局部的) ,(有的书把全局也称为外部) 找本书一定要把这几个弄清楚李。如果学c++,还要理解类的成员变量,类的成员函数,类的静态成员变量,类的静态成员函数。看起来很头痛,但不搞清楚很难深入下去。
CString m_stname;
m_stname ststatus[] = new m_stname[27];
for(int i=0;i<26;i++)
ststatus[i] = new m_stname();
extern CStation ststatus[27];
一般会把extern声明放在函数外边。这样声明的东西从声明位置开始到这个编译单元结束都可以用。
我是一个VB程序员,现在想用VC,感觉真难啊,不像在VB里,点几个控件,在控件里编几个程序就可以了。另外非常感谢sxcong的解答。