VC++中变量引用的问题?

CSetup.h中:ClassCSetup:publicCDialog{public:intvar1;......}CSetup.cpp中:voidCSetup:OnOK... CSetup.h中:
Class CSetup:public CDialog
{
public :
int var1;
......
}

CSetup.cpp中:
void CSetup:OnOK()
{
var1=5;
......
}

在主对话框中:
CMainDlg.h:
#include "CSetup.h"
Class CMainDlg:public CDialog
{
CSetup SDlg;
......
}

CMainDlg.cpp:
void CMainDlg::OnPaint()
{
......
int x=SDlg.var1;
......
}

从主对话框调用Setup对话框,OK之后,var1=5。但在CMainDlg::OnPaint()中看SDlg.var1,为什么SDlg.var1的值不是5,而是一个任意值呢?
展开
 我来答
百度网友82a7bdc5d
2006-04-06 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:70
采纳率:0%
帮助的人:0
展开全部
你在主对话框的什么位置调用了SetUp对话框,若在Onpaint函数执行调用的,那其值应该是任意值了。
执行过SetUp对话框的OnOk函数之后,在主对话框中看到的值应该是5。
因为SetUp的对象作为主对话框的成员函数,所以只有在主对话框退出时才会无效,
引起调用SetUp的析构函数,这样会出错(非法操作),而不是任意值了。
百度网友5c86e501f
2006-04-06
知道答主
回答量:54
采纳率:0%
帮助的人:0
展开全部
点击ok以后自动调用了Cset的析构函数,原来的对象应该已经不存在了,对象的成员变量自然也不可能存在了,是任意的值!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式