// 25_25-13.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>

using namespace std;

class ClsX {
private:
	int x;
public:
	ClsX(int n) { x = n; }
	void disp() { cout << "x=" << x << '\n'; }
	friend class ClsA;	// ClsAをフレンドクラスに指定
};

class ClsA {
private:
	int a;
public:
	ClsA(int n) { a = n; }
	void disp() {cout << "a=" << a << '\n'; }
	bool equ(ClsX obj);	// ClsXを引数にする
	void swap(ClsX &obj);	// ClsX&を引数にする
	void disp_ab(ClsX obj);	// ClsXを引数にする
};

bool ClsA::equ(ClsX obj)	// 等価判定関数
{
	// ClsXのprivateメンバxにアクセス可
	return a == obj.x;
}

void ClsA::swap(ClsX &obj)	// 交換関数
{
	// ClsXのprivateメンバxにアクセス可
	int tmp = a;
	a = obj.x;
	obj.x = tmp;
}

void ClsA::disp_ab(ClsX obj)	// 内容表示関数
{
	// ClsXのprivateメンバxにアクセス可
	cout << "a=" << a << " x=" << obj.x << '\n';
}

int _tmain(int argc, _TCHAR* argv[])
{
	int n;
	ClsA aa(100);
	ClsX xx(120);

	aa.disp();
	xx.disp();
	aa.disp_ab(xx);

	aa.swap(xx);
	aa.disp_ab(xx);

	n = aa.equ(xx);
	cout << "n=" << n << '\n';

	MessageBox(NULL, _T("Check Console Window"), L"MessageBox", MB_OK);

	return 0;
}

