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

Access function variables between friend classes

本文关键字:函数 变量 之间 友元 访问      更新时间:2023-10-16

只是想知道...如果两个类都声明为"朋友",如何从类 B 的另一个函数中访问类 A 函数 Open() 的变量"路径"?当选择子窗口时,我基本上尝试使用父窗口中的信息填充子窗口,尽管两个窗口都有不同的类。

A类.cpp:

void ClassA::Open() 
{ 
// Open Program Properties window 
ClassB dlg; 
dlg.DoModal(); 
CString path; 
path = m_DirTree.GetCurrentDir(); //Path specified by tree selection
}

B类.cpp:

void ClassB::Display(){
//HOW CAN I ACCESS 'path' HERE? 
SetDlgItemText(IDC_PATH, path); //Populate the edit box 
}

感谢您的回复...

通过引用传递 A 对象(或任何其他使对象对 B::D isplay 可见的方法),然后用 '." 运算符填充它

void ClassB::Display(A &a){
    SetDlgItemText(IDC_PATH, a.path);
}

尽管您可能需要考虑公开公共集并为这些类型的变量获取函数

使用您当前的代码,您不能。

功能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
}