MFC中一個類要訪問另外一個類的的對象的成員變量值,這就需要獲得原來那個類對象的指針,其實有好幾種方法都可以實現。
比如維護一個單例模式、設置靜態變量等等。我們這里舉個列子,實現多個類之間的相互訪問。
一、示例:創建MFC對話框,實現對個對話框之間數據訪問
- 我們創建一個MFC對話框應用程序,命名為Visit工程.
- 對話框本身有一個主界面(CVisitDlg對話框),那我們再添加一個新界面CXXXDlg.
二、在主界面CVisitDlg類的頭文件中,添加一個static CVisitDlg *s_pDialog;指針
由於這個指針式靜態的,我們需要在類外初始化,那么我們在CVisitDlg .cpp文件中,寫上一行初始化代碼,直接初始化為空,如下:
CVisitDlg *CVisitDlg::s_pDialog = NULL; //(注意要寫在類外,不要寫在類實現函數里面)。
三、然后需要在CVisitDlg 主對話框生成的時候,給這個指針賦值為主對話框指針。
那么,我們可以在CVisitDlg 類的構造函數或者OnInitDialog()函數里面寫上如下一句代碼:
s_pDialog = this;
好了,現在我們只要在其他的類里面獲得這個靜態指針,就可以訪問這個類里面的所有數據了~~~~
四、獲得靜態指針
假設,我們想在CXXXDlg類中訪問CVisitDlg類的數據,如下代碼輕輕松松搞定:
CVisitDlg *pDia = CVisitDlg::s_pDialog;