// 29_29-14.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>

using namespace std;

template<typename T> class ClsCID {
public:
	T a, b;
};

// 第1引数はクラス、第2引数はデータ型を指定するテンプレート
// 第2引数省略時はClsCID<varT>を使う
template<typename varT, typename tmpT = ClsCID<varT> > class Mycls {
private:
	tmpT x;
public:
	void set(varT n1, varT n2) { x.a = n1; x.b = n2; }
	void disp() { cout << "a=" << x.a << " b=" << x.b << '\n'; }
};

int _tmain(int argc, _TCHAR* argv[])
{
	Mycls<char> d1;	// 第2引数を省略
	Mycls<int> d2;	// 第2引数を省略
	Mycls<double> d3;	// 第2引数を省略

	d1.set('A', 66);
	d1.disp();

	d2.set(100, 66);
	d2.disp();

	d3.set(33.33, 44.44);
	d3.disp();

	MessageBox(NULL, _T("Check Console Window"), L"MessageBox", MB_OK);

	return 0;
}

