可以声明B类是A类的友元,这样B的函数就可以访问A的数据(公有私有都行),但是友元关系是单向的,也就是说,A的函数不能访问B的数据。
//友元类
#include <iostream>
using namespace std;
class A{
friend class B; //注意写法
public:
void display(){cout << x << endl;}
private:
int x;
};
class B{
public:
void set(int i);
void display();
//private
A a; //此处定义a是为了使用A类
};
void B::set(int i){
a.x = i;
}
void B::display(){
a.display();
}
int main(){
B b;
b.set(0);
b.display();
b.a.display(); //如果a是private则无法执行改行函数
}
//友元关系是单向,声明了B是A的友元,B的函数可以访问A的数据,但是反之不行。