如何用全局友元函数同时访问多个类的私有成员
时间: 2023-09-18 16:08:39 浏览: 99
可以将这些类的私有成员都声明为该全局友元函数的友元,从而使该函数可以访问它们的私有成员。具体实现如下:
```c++
class ClassA {
private:
int a;
friend void globalFriendFunction(ClassA&, ClassB&, ClassC&);
};
class ClassB {
private:
int b;
friend void globalFriendFunction(ClassA&, ClassB&, ClassC&);
};
class ClassC {
private:
int c;
friend void globalFriendFunction(ClassA&, ClassB&, ClassC&);
};
void globalFriendFunction(ClassA& objA, ClassB& objB, ClassC& objC) {
// 可以访问 objA、objB、objC 的私有成员 a、b、c
std::cout << objA.a << std::endl;
std::cout << objB.b << std::endl;
std::cout << objC.c << std::endl;
}
int main() {
ClassA objA;
ClassB objB;
ClassC objC;
globalFriendFunction(objA, objB, objC);
return 0;
}
```
在上述代码中,全局友元函数 `globalFriendFunction` 同时访问了三个类的私有成员 `a`、`b`、`c`,而这三个类的私有成员都声明为了该函数的友元。在 `main` 函数中,我们可以创建这三个类的对象,然后调用 `globalFriendFunction` 函数来访问它们的私有成员。
阅读全文