描述:
在CFileTrans类里定义:
USERINFO m_tarUserInfo;
void SetTarUserInfo(USERINFO tarUserInfo)
{
m_tarUserInfo = tarUserInfo;
}
在CLogin类里使用:
CFileTrans* m_fileTrans;
void SetTarUserInfo(USERINFO tarUserInfo)
{
m_fileTrans->SetTarUserInfo(tarUserInfo);
}
在MainDlg类里使用:
CLogin m_Login;
USERINFO m_tarUserInfo;
m_Login.SetTarUserInfo(m_tarUserInfo);
其中USERINFO为一个结构体,MainDlg类里已经给m_tarUserInfo赋值,编译没问题,运行就提示如下:
0x00445f54 处未处理的异常: 0xC0000005: 写入位置 0xcccccf34 时发生访问冲突 。
此时指向CFileTrans类的
void SetTarUserInfo(USERINFO tarUserInfo)
{
m_tarUserInfo = tarUserInfo;
}
怎么回事呢?该如何解决啊
解决方案1:
在CLogin类里.
1.要么用普通对象变量, CFileTrans m_fileTrans;
2. 如果用指针一定要动态生成对象.
CFileTrans* m_pfileTrans;
m_pfileTrans = new CFileTrans;
否则就是一个空的指针
在CLogin类的构造函数中,增加 m_fileTrans = new CFileTrans;
解决方案3: CFileTrans* m_fileTrans;
void SetTarUserInfo(USERINFO tarUserInfo)
{
m_fileTrans->SetTarUserInfo(tarUserInfo);
}
==你根本没有给m_fileTrans指针分配空间啊,怎么可能进行指针操作呢???必死无疑啊。