有两个类01.h文件
----------------
class a
{
public:
void st();
};02.h文件
----------------
class b
{
public:
int mm;
};01.cpp文件
----------------
include "2.h"
void a::st()
{
????????????请问a类中如何访问b类的mm成员变量??
};将int mm声明为static可以解决 但是 在关闭01文件的时候 再打开 int mm的值还是会存在 所以 请不要用static静态声明来解决此问题.
----------------
class a
{
public:
void st();
};02.h文件
----------------
class b
{
public:
int mm;
};01.cpp文件
----------------
include "2.h"
void a::st()
{
????????????请问a类中如何访问b类的mm成员变量??
};将int mm声明为static可以解决 但是 在关闭01文件的时候 再打开 int mm的值还是会存在 所以 请不要用static静态声明来解决此问题.
Get()
Set()void a::st(b bVar)
{
bVar.Set(XX);
};
???????????
{
bVar.Set(XX);
};
???????????疏忽了
不就是为了让别人直接访问的吗?
问题是如何访问 如果我生成了static int mm;
则可以用b::mm;来访问此成员变量.如果不能声明为静态变量 还能用什么方法?上面说到的友员怎么解释?
一个类的成员变量如果不基于这个类的实例(对象),那么它的意义是什么呢?我觉得是这样的,你能否说一下你的最初的需求?
01.h 01.cpp是01窗体中的类 就是用VC中的classwizard自动生成的窗体类 不过我不用说太详细你也能知道
然后就是02窗体生成的类可以访问01窗体01.h中class 01中声明的数据成员 怎样能做到?并不是单纯的想访问01窗体的数据 而是一定要访问在01.h中class 01类中的数据成员.
1. 窗体类必须实例化后才能表达真正的windows窗口.
2. 窗体类中的成员变量也只有在该类的实例中才具有意义.
3. 你必须明白,类只是模型,只有针对具体对象的时候这样的模型描述才有意义.
既然是窗体,有很多方法可以访问其成员:
1. 你可以通过窗口间的消息互发来实现.
2. 你可以通过一个指向窗口实例的窗口类指针来实现成员的访问.
具体方法很多,但是你必须记住的是直接使用b::mm的方式很多时候其实访问未初始化的变量
但是 窗体类的实例对象怎么得到?你说的第二种方法.我比较想学习下.还有就是 我关闭了窗体01之后 为什么再调用的时候 它的数据成员值还存在?
调用方法为:
02.cpp
include "01.h"
01 dlg;
dlg.DoModle();
当显示了01窗体 我关闭后 再调用 我发再值不会重新初始化 还存在 为什么?
这么说 当我 01 dlg;的时候 dlg就是这个窗体的实例了???
也就是说dlg.mm就可以???
我试下看.