类指针对象在对话框间传递异常
类指针对象在对话框间传递错误
个人先定义了一个类CSensorInfo用户存储传感器信息:
后分别在要需要进行参数传递的对话框类ADlg、BDlg头文件中添加
#include<SensorInfo.h>头文件
并定义参数
public:
CSensorInfo SrInfo,*pSrInfo;成员变量
在对话框类的构造函数中添加对应初始话
pSrInfo=NULL;
pSrInfo=&SrInfo;//对类进行初始化
在ADlg对话框按钮响应函数中对指针类进行类指针对象的赋值,如下
在另一个对话框中BDlg的参数传递函数中实现将ADlg对话框该类指针对象的参数传递进来
但是在传递过程中发现参数出现前后不一致的现象:
下图是类在对话框ADlg中的值

而传递到BDlg中却成了这样

这是为什么啊?请大神解救!
------解决方案--------------------
ADlg中的SrInfo是成员变量
他会随着ADlg对象的销毁而销毁
它的指针自然也就成了野指针
------解决方案--------------------
改为 SrInfo这个对象就被拷贝出来了
也就不存在野指针的问题了
------解决方案--------------------
浅拷贝和深拷贝的问题,了解一下吧。
个人先定义了一个类CSensorInfo用户存储传感器信息:
#pragma once
class CSensorInfo: public CObject
{
public:
CSensorInfo(void);
~CSensorInfo(void);
public:
//CRect plateRc;//实验板信息
UINT nSrNumber;//传感器数目
CString strSrName;//传感器名
CString strSrPointX;//传感器x坐标
CString strSrPointY;//传感器y坐标
CString strSrRcvFilName;//传感器接收数据文件名
};
后分别在要需要进行参数传递的对话框类ADlg、BDlg头文件中添加
#include<SensorInfo.h>头文件
并定义参数
public:
CSensorInfo SrInfo,*pSrInfo;成员变量
在对话框类的构造函数中添加对应初始话
pSrInfo=NULL;
pSrInfo=&SrInfo;//对类进行初始化
在ADlg对话框按钮响应函数中对指针类进行类指针对象的赋值,如下
void ADlg::OnClickedAddSensor()
{
// TODO: 在此添加控件通知处理程序代码
sensorNb++;
pSrInfo->nSrNumber=sensorNb;
GetDlgItemText(IDC_SENSOR_NAME,pSrInfo->strSrName);
GetDlgItemText(IDC_SENSOR_X,pSrInfo->strSrPointX);
GetDlgItemText(IDC_SENSOR_Y,pSrInfo->strSrPointY);
}
在另一个对话框中BDlg的参数传递函数中实现将ADlg对话框该类指针对象的参数传递进来
void BDlg::OnNewProject()
{
// TODO: 在此添加命令处理程序代码
ADlg pjt;
if(pjt.DoModal()==IDOK)
{
pSrInfo=pjt.pSrInfo;
SetDlgItemText(IDC_EDIT1,pSrInfo->strSrPointX);
}
}
但是在传递过程中发现参数出现前后不一致的现象:
下图是类在对话框ADlg中的值
而传递到BDlg中却成了这样
这是为什么啊?请大神解救!
------解决方案--------------------
ADlg中的SrInfo是成员变量
他会随着ADlg对象的销毁而销毁
它的指针自然也就成了野指针
------解决方案--------------------
改为 SrInfo这个对象就被拷贝出来了
也就不存在野指针的问题了
------解决方案--------------------
浅拷贝和深拷贝的问题,了解一下吧。