// 28_28-7.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <typeinfo>

using namespace std;

// x,yを管理する基底クラス
class ClsXY {
public:
	double x, y;
	ClsXY(double n1, double n2) { x = n1; y = n2; }
	virtual void dummy() = 0;
};

// 三角形を管理するクラス
class Triangle : public ClsXY {
public:
	Triangle(double n1 = 0.0, double n2 = 0.0) : ClsXY(n1, n2) { ; }
	void area3() { cout << "三角形 面積=" << x*y/2.0 << '\n'; }
	void dummy() { ; }
};

// 四角形を管理するクラス
class Square : public ClsXY {
public:
	Square(double n1 = 0.0, double n2 = 0.0) : ClsXY(n1, n2) { ; }
	void area4() { cout << "四角形 面積=" << x*y << '\n'; }
	void dummy() { ; }
};

// データを表示する関数
void dataout(ClsXY *d)
{
	Triangle *p3;
	Square *p4;
	if (p3 = dynamic_cast<Triangle*>(d)) {
		p3->area3();
	}
	if (p4 = dynamic_cast<Square*>(d)) {
		p4->area4();
	}
}
	
int _tmain(int argc, _TCHAR* argv[])
{
	Triangle d3(10, 20);
	Square d4(30, 40);

	dataout(&d3);
	dataout(&d4);

	MessageBox(NULL, _T("Check Console Window"), L"MessageBox", MB_OK);

	return 0;
}

