| Class A provides friendship to class B. | Lecture 3 - slide 30 : 36 Program 1 |
// Class B is a friend of class A, such that methods in
// class B can access private variables in class A.
// It is important that class A is defined before class B,
// because the details of class A are needed in mb.
#include <iostream>
#include <string>
class B; // forward declaration, B is an incomplete class
class A{
private:
double a;
public:
friend class B; // B must be known here!
A(double a):a(a){}
void ma(){
a += 3.0;
}
void print(){
std::cout << a << std::endl;
}
};
class B{
private:
double b;
public:
B(double b):b(b){}
void mb(A &x){
b += x.a; // x.a is OK because class B is a friend of A
}
void print(){
std::cout << b << std::endl;
}
};
int main(){
A aObj(1);
B bObj(2);
aObj.ma();
bObj.mb(aObj);
aObj.print(); // 4
bObj.print(); // 6
}