访问友元类之间的函数变量

时间:2015-03-11 12:26:52

标签: c++

只是想知道......我怎样才能访问变量'路径' 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 

}

谢谢你的回复...

2 个答案:

答案 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
}