只是想知道......我怎样才能访问变量'路径' ClassA函数Open()来自ClassB类的另一个函数,如果这两个类都被声明为' friends&#39 ;?当选择子窗口时,我基本上尝试使用父窗口中的信息填充子窗口,尽管两个窗口都有不同的类。
ClassA.cpp:
void ClassA::Open()
{
// Open Program Properties window
ClassB dlg;
dlg.DoModal();
CString path;
path = m_DirTree.GetCurrentDir(); //Path specified by tree selection
}
ClassB.cpp:
void ClassB::Display(){
//HOW CAN I ACCESS 'path' HERE?
SetDlgItemText(IDC_PATH, path); //Populate the edit box
}
谢谢你的回复...
答案 0 :(得分:1)
您通过引用传递A对象(或以任何其他方式使对象对B :: Display可见)并使用'。'过量它。运营商
void ClassB::Display(A &a){
SetDlgItemText(IDC_PATH, a.path);
}
虽然你可能想考虑公开这些变量的公共集合和获取函数
答案 1 :(得分:1)
使用您当前的代码,您可以
在void ClassA::Open()
函数之后,您的CString path;
将被销毁。
您可以将CString path;
保存为成员变量。
或者您可以在函数CString
中添加void ClassB::Display()
变量,这可能会产生以下代码:
void ClassA::Open(void)
{
// Open Program Properties window
ClassB dlg;
dlg.DoModal();
CString path;
path = m_DirTree.GetCurrentDir(); //Path specified by tree selection
m_classBMember.Display(path);
}
void ClassB::Display(CString &path)
{
SetDlgItemText(IDC_PATH, path); //Populate the edit box
}