指针指向变量,地址改变,该怎么解决
指针指向变量,地址改变
&xyz 和&(p ->xyz)有何不同?其中p是指针
------解决思路----------------------
楼主说的是&(p),P是指向XYZ的指针吧?
如果是这样的话,&xyz和*P是一样的,都是xyz变量的地址
不知道我的理解对不对
------解决思路----------------------
一个是xyz变量,一个是p的成员变量xyz
------解决思路----------------------
xyz和p->xyz有什么不同。
------解决思路----------------------
CTreeCtrl* pWndTree0 = (CTreeCtrl*) &(cfv0->xyz);
进行强制类型转换,比如,基类和派生类类型强制转换得到地址值会不一样
------解决思路----------------------
就看你这段代码只能说cfv0不是你要的指针
我没猜错的话你有一个视图的类型是CFileView
里面有一个变量是m_wndFileView
你想访问这个变量但是没有找到正确的CFileView的指针
然后你自己new了一个出来
那当然不一样了
根本不是一个东西
------解决思路----------------------
如果确实因为强制转换引起的不一样,xyz是子类,而CTreeCtrl是父类,那么没有问题,一切将会正常
如果是其他情况,那就会是错误的
------解决思路----------------------
这个就不是建立的问题
而是获取的问题
至于怎么获取就要看你的程序结构了
你明明有CFileView的视图实体对象
当然要想办法获取到它的指针
实在不知道怎么弄可以在视图内部通过this指针过渡到一个全局变量里
&xyz 和&(p ->xyz)有何不同?其中p是指针
------解决思路----------------------
楼主说的是&(p),P是指向XYZ的指针吧?
如果是这样的话,&xyz和*P是一样的,都是xyz变量的地址
不知道我的理解对不对
------解决思路----------------------
一个是xyz变量,一个是p的成员变量xyz
------解决思路----------------------
xyz和p->xyz有什么不同。
------解决思路----------------------
CTreeCtrl* pWndTree0 = (CTreeCtrl*) &(cfv0->xyz);
进行强制类型转换,比如,基类和派生类类型强制转换得到地址值会不一样
------解决思路----------------------
就看你这段代码只能说cfv0不是你要的指针
我没猜错的话你有一个视图的类型是CFileView
里面有一个变量是m_wndFileView
你想访问这个变量但是没有找到正确的CFileView的指针
然后你自己new了一个出来
那当然不一样了
根本不是一个东西
------解决思路----------------------
如果确实因为强制转换引起的不一样,xyz是子类,而CTreeCtrl是父类,那么没有问题,一切将会正常
如果是其他情况,那就会是错误的
------解决思路----------------------
xyz是类A中的PUBLIC成员变量;我在类B中引用类A中的xyz,如下:
CFileView* cfv0 ;
cfv0 = new CFileView();
CTreeCtrl* pWndTree0 = (CTreeCtrl*) &(cfv0->m_wndFileView);
经过反复测试发现 &(cfv0->m_wndFileView)的值 != &m_wndFileView
如果说cfv0->m_wndFileView和m_wndFileView一样,那么为何&(cfv0->m_wndFileView)的值 != &m_wndFileView
就看你这段代码只能说cfv0不是你要的指针
我没猜错的话你有一个视图的类型是CFileView
里面有一个变量是m_wndFileView
你想访问这个变量但是没有找到正确的CFileView的指针
然后你自己new了一个出来
那当然不一样了
根本不是一个东西
楼上说的对,请教,那么这个CFileView的指针如何建立才是正确的呢?
这个就不是建立的问题
而是获取的问题
至于怎么获取就要看你的程序结构了
你明明有CFileView的视图实体对象
当然要想办法获取到它的指针
实在不知道怎么弄可以在视图内部通过this指针过渡到一个全局变量里