【发布时间】:2015-09-14 09:57:52
【问题描述】:
我有一个非常基本的问题。我正在使用 MFC 构建用户界面。在我的一个 buttonClicks 方法中,我创建了一个临时对象 (folderDlg),并且我希望在其他 buttonClicks 中恢复该对象(有点像在 matlab gui 中保存句柄)。 目前我在我的 dlg 类 (GUI_FORM) 中创建了一个成员对象 (pathFolder) 并将其引用设置为 temp 对象。很明显temp对象在buttonClick结束的时候就被破坏了,成员的引用也丢失了…… 保持创建的对象以供进一步使用的最简单方法是什么?
相关代码部分:
class GUI_FORM : public CDialog
{
public:
GUI_FORM(CWnd* pParent = NULL) : CDialog(GUI_FORM::IDD, pParent) // wizard code
{ }
CFolderPickerDialog * pathFolder;
public:
DECLARE_MESSAGE_MAP()
afx_msg void OnBnClickSaveAs();
...
}
void GUI_FORM::OnBnClickSaveAs()
{
CFolderPickerDialog folderDlg;
if (folderDlg.DoModal() == IDOK)
AfxMessageBox(folderDlg.GetFolderPath());
GUI_FORM::pathFolder = &folderDlg;
}
【问题讨论】:
-
也许只是让它成为一个完整的成员变量
CFolderPickerDialog pathFolder;,而不仅仅是一个指针。 -
为什么要复用它?出于效率原因?我建议你避免这种情况;你所做的已经是正确的事 (TM)
-
您是否考虑过学习编程语言,而不是询问最小、最基本的问题?请参阅The Definitive C++ Book Guide and List,并至少选择一个。
标签: c++ mfc pass-by-reference