#include <iostream>
using namespace std;

class A
{
private:
    int m_value = 1;
    
    friend void doSomething(A& a);
};

void doSomething(A& a)
{
    cout << a.m_value << "\n";  // class의 private에 접근하고 싶다!
}


int main()
{
    A a;
    doSomething(a); 
	return 0;
}
#include <iostream>
using namespace std;

class B; // forward declaration 자주 사용하지는 않음.

class A
{
private:
    int m_value = 1;
    
    friend void doSomething(A& a, B& b);
};

class B
{
private:
    int m_value = 2;
    
    friend void doSomething(A& a, B& b);
};



void doSomething(A& a, B& b)
{
    cout << a.m_value << " " << b.m_value << "\n";  // class A,B와 friend일 경우 class A에서 class B의 정보를 얻지 못하므로
    												// 전방선언해준다.
}


int main()
{
    A a;
    doSomething(a); 
	return 0;
    
    
    
}