是MFC的,我在运行程序时,每打开一个文档都要用到前一个文档中的一个变量,在View类中设置了全局变量v1,v2,文档的值赋给v2,v=v1-v2,然后v1=v2,再打开新文档后,v1总是等于初始化的0,怎么办?
追答可否清晰点,给出v1,v2, view ,文档,的大致定义?以及如何初始化v1
追问view是MFC的视类,每个文档(对应不同时刻的数据)中包含一个位置信息,我要求速度,所以在视类中定义全局变量v1,v2初始化为0,第一个文档的位置信息赋给v2,打开下一个文档用位置信息赋给v1,v2-v1=速度,v1=v2,再打开下一个文档,重复以上过程。(第一个文档不计算速度)。可是每次新打开文档,v1都变为了0,怎么回事?
追答是这么定义的么?
view.h
class xxview{ }
extern Point v1,v2;
view.cpp
Point v1,v2;
#incluce
doc.cpp
#incluce
view.h
float v1,v2,v;
view.cpp
构造函数中:v1=0.0;v2=0.0;v=0.0;
一个函数中:v2=变量值
另一个函数中:v=v1-v2; v1=v2;
这样不行吗?为什么每次打开新文档,v1都是0?帮帮忙吧,新手很着急啊,多谢啦!
打开新文档?
是指的新建doc类?
就是在MFC的视类窗口中点击“打开”,读取一个新文档的数据。
追答view.h
extern float v1,v2,v;
view.cpp
全局区 float v1=0,v2=0,v=0;
构造函数中:去掉(//v1=0.0;v2=0.0;v=0.0;)
extern float v1,v2,v;出现错误: error C2071: “CAView::v1”: 非法的存储类,怎么办呢?
追答extern float v1,v2,v;是放在全局区,不是放在CAView成员区
追问非常感谢!虽然不太明白原理,但是问题解决了!
追答估计是这样情形:
你开始是定义v1为成员,
而每次打开新文档,估计是新建了一个view对象,成员是随对象的,所以每次你使用的都是新的CAView对象的v1,而不是同一个v1。