在不属于类成员的函数中是不能直接使用类的成员函数的,可以有如下方法解决:
1、传递类实例指针
这个方法简单实用。如下代码,类CTestDlg的成员函数OnButton中调用了非类成员函数noClassFun,而在noClassFun又需要使用成员函数UpdateData和成员变量m_type,于是传入类CTestDlg的指针,即可访问。
void CTestDlg::OnButton()
{
noClassFun(this);
}
void noClassFun(CTestDlg *pDlg)
{
pDlg->UpdateData(TRUE);
pDlg->m_type;
}
2、获取类实例指针,然后通过其访问相关成员
需要注意的是,在使用的时候应该注意获取得到的指针的类型。如果访问标准MFC的相关类成员,获取后不经过强制转换就可以访问。但是如果是自己定义的类成员需要转换成自己的类才行(如下面的CTestDlg的m_type成员)。
void CTestDlg::OnButton()
{
noClassFun(void);
}
void noClassFun(void)
{
//获取需要的类的指针,这里获取了窗口类的指针
AfxGetMainWnd()->UpdateData(TRUE);
//访问自己的类成员需要转换为自己定义的类
((CTestDlg*)AfxGetMainWnd())->m_type;
}
注:获取各种句柄,请参考http://blog.csdn.net/okvee/article/details/3655162