我定义了一个结构体,在主程序里面构造了一个结构体的对象,并进行了赋值。
然后我再创建了一个类,在类中通过主程序的指针使用该结构体,现在的问题是:
比如说,我调试的时候看到结构体的值是1,但是我比较时
if(g_mainDlg->m_struMyData->iValue == 1) 却返回false;另外,如果我在创建的类中声明一个结构体的指针,我这样初始化:
m_pstruMyData = &g_mainDlg->m_struMyData;
调试时看见&g_mainDlg->m_struMyData内存地址和m_pstruMyData地址不相等(相差30多个字节),这就导致了在使用m_pstruMyData时的值和g_mainDlg->m_struMyData不一致这是什么问题啊?郁闷死我了~~
然后我再创建了一个类,在类中通过主程序的指针使用该结构体,现在的问题是:
比如说,我调试的时候看到结构体的值是1,但是我比较时
if(g_mainDlg->m_struMyData->iValue == 1) 却返回false;另外,如果我在创建的类中声明一个结构体的指针,我这样初始化:
m_pstruMyData = &g_mainDlg->m_struMyData;
调试时看见&g_mainDlg->m_struMyData内存地址和m_pstruMyData地址不相等(相差30多个字节),这就导致了在使用m_pstruMyData时的值和g_mainDlg->m_struMyData不一致这是什么问题啊?郁闷死我了~~
解决方案 »
- 超过10万行数据点的绘制曲线,还要有缩放功能,如何提高效率!!!!
- 求助高手,有关文件路径的问题。
- 用raw socket编写多线程ping程序的问题
- 如何用程序突破XP自带的防火墙让自己的网络应用程序访问网络?
- 要和女友分手了!散尽所有可用分
- 如何显示剪贴板中的DIB位图
- 那个函数是得到控件在对话框中的位置,返回rect值?
- Word在没有安装打印机的情况下可以进行打印预览,而用VC向导生成的程序却不行,为什么,有解决的办法吗?
- 怎么获得某个后缀(如.wav)的文件在资源管理器中显示的图标呀?
- 一个简单的问题,帮我看看!
- 如何使Combo box有记忆功能
- VC6.0 如何获得List Control控件:鼠标选中的一行内容;按下 Button按钮并删除
class MainDlg()
{
NET_STRU_DATA m_struMyData; void Dosomething();
}void MainDlg::Dosomething()
{
m_struMyData.iValue = 1; CMyClass *pMyClass = new CMyClass;
pMyClass->Func();
}MainDlg g_MainDlg
g_MainDlg.Create(.....) //省略,就是创建对话框class CMyClass()
{
....
void Func()
{
if(g_MainDlg.m_struMyData.iValue == 1)
{
....
}
}
}
class MainDlg()
{
NET_STRU_DATA m_struMyData; void Dosomething();
} void MainDlg::Dosomething()
{
m_struMyData.iValue = 1; CMyClass *pMyClass = new CMyClass;
pMyClass->Func();
} MainDlg g_MainDlg
g_MainDlg.Create(.....) //省略,就是创建对话框 class CMyClass()
{
NET_STRU_DATA m_pstruMyData;
....
void Func()
{
m_pstruMyData = &g_MainDlg.m_struMyData; //m_pstruMyData的值是乱码,比m_struMyData的内存地址提前了30多字节
}
}
除了结构体外,像int,char,CString.....这些使用是正常的
m_struMyData是一个指针,
m_pstruMyData = &g_mainDlg->m_struMyData,估计m_pstruMyData这个也是指针,
那应该这样写m_pstruMyData = g_mainDlg->m_struMyData
这里写错了,因为临时打的
按照你的写法g_mainDlg->m_struMyData->iValue 应该为g_mainDlg->m_struMyData.iValue
g_MainDlg.Create(.....) //省略,就是创建对话框 你g_MainDlg到底是对象还是指针? 这段代码你放哪里的? 列出你各个对象所在的内存区域,(堆,栈,还是全局数据区)
g_MainDlg是对象。这段代码在DLL的导出函数里,我前面说的所有类都在dll里面。m_开头的是类成员变量,g_开头的是全局变量