访问友元类之间的函数变量
Access function variables between friend classes
只是想知道...如果两个类都声明为"朋友",如何从类 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
}
相关文章:
- 未使用的C++未优化的静态成员函数/变量
- 内联函数/变量的外部链接
- 同一函数中的静态函数变量初始化顺序
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 如何从doxygen输出中排除类的无证件成员函数/变量
- 如何在LUA C API中分配全局LUA函数变量
- 如何将函数变量传递给C lambda函数
- 通过另一个C++函数更改函数变量
- c++11 lambda 真的支持闭包吗?函数变量中存在语义冲突
- C++:静态成员不能在声明时定义,但静态函数变量可以?
- apache-frift是否支持函数变量作为参数
- 类函数/变量在使用之前必须声明
- 函数变量去哪里
- 无法使用函数变量?错误表达式必须具有类类型
- 如何在main中使用函数变量
- 每当尝试打印函数变量时,C++ cout 错误
- 是否存在查看成员函数/变量的整洁等效项
- 访问友元类之间的函数变量
- 函数到函数变量
- 一个定义规则是否强制创建一个静态函数变量