类指针 和 实例指针不一样是啵?
this指针 是个类指针 不是实例指针~?
小弟没学过编译原理.. 弱弱问一下..这样的:
我在CMainFram类里面 声明有一个 CSpliWnd 类的变量m_spliClass CMainFram
{
public:
CSpliWnd m_spli;
CStatusBar m_statebar;
//这些变量在CMainFram构造的时候实例化了(这是当然的)
MainFrameFounction();
}
然后
void CMainFram::OnCreate();
{
m_statebar.CreateEx(...);
.....//这里m_statebar已经创建了状态栏
}在然后有:
void CMainFram::OnCreateClient();
{
m_spli.Create(this,...);
//下面有给出Create的定义
...
}在CSpliWnd 类里这样的定义
Class CSpliWnd
{
Public:
CWND* m_pParent;
void Create(cwnd* parent,...);
void CSpliWndFounction();
....
}
void CSpliWnd::Create(cwnd* parent,...);
{
m_pParent=(CMainFrame*)parent;
}这样就记录了原来宿主窗口类的指针...但是: 继续下面的操作不行.void CSpliWnd::CSpliWndFounction();
{
m_pParent.MainFrameFounction();
}然后...跳到了..
void CMainFram::MainFrameFounction();
{
m_statebar.SetPanText(2,"That's OK");//这里出错 .....
//在监视器里面看到m_statebar为0x000000,空的。
//问题出来了:跳到这里并不是调用m_spli的那个实例...
}最后弱弱问一下:this指针为什么传递不了宿主实例过来?但是从theApp实例里面获取m_MainFrame就可以得到正确的。
高手请帮帮忙呀!
this指针 是个类指针 不是实例指针~?
小弟没学过编译原理.. 弱弱问一下..这样的:
我在CMainFram类里面 声明有一个 CSpliWnd 类的变量m_spliClass CMainFram
{
public:
CSpliWnd m_spli;
CStatusBar m_statebar;
//这些变量在CMainFram构造的时候实例化了(这是当然的)
MainFrameFounction();
}
然后
void CMainFram::OnCreate();
{
m_statebar.CreateEx(...);
.....//这里m_statebar已经创建了状态栏
}在然后有:
void CMainFram::OnCreateClient();
{
m_spli.Create(this,...);
//下面有给出Create的定义
...
}在CSpliWnd 类里这样的定义
Class CSpliWnd
{
Public:
CWND* m_pParent;
void Create(cwnd* parent,...);
void CSpliWndFounction();
....
}
void CSpliWnd::Create(cwnd* parent,...);
{
m_pParent=(CMainFrame*)parent;
}这样就记录了原来宿主窗口类的指针...但是: 继续下面的操作不行.void CSpliWnd::CSpliWndFounction();
{
m_pParent.MainFrameFounction();
}然后...跳到了..
void CMainFram::MainFrameFounction();
{
m_statebar.SetPanText(2,"That's OK");//这里出错 .....
//在监视器里面看到m_statebar为0x000000,空的。
//问题出来了:跳到这里并不是调用m_spli的那个实例...
}最后弱弱问一下:this指针为什么传递不了宿主实例过来?但是从theApp实例里面获取m_MainFrame就可以得到正确的。
高手请帮帮忙呀!
本来是可以实现的,m_MainFrame的this指针就是m_ManFrame的地址,我程序的逻辑问题出错让我怀疑这点了。
因为我之前在两个不同的窗口类对象里面各创建了一个SpliWnd类对象,所以分别传递了这两个类实例的this指针给它们的CSpliWnd类实例。但在SlipWndFuntion()里面,已经死定义这个this指针强制为CMainFrame*了,所以另一个类需要调用SlipWndFuntion()当然不会跳到m_MainFrame里面了! 小题大作 大家见笑了!