○テンプレート

■関数のテンプレート

template <class T>
T Add(T a,T b){
	return a+b;
}


int main(int argc, char* argv[])
{
	{
		int a=10;
		int b=20;
		int c=Add<int>(a,b);
		printf("%d\n",c);
	}	
	{
		double a=10;
		double b=20;
		double c=Add<double>(a,b);
		printf("%f\n",c);
	}	
	return 0;
}

■クラスのテンプレート

template <class T>
class test{
public :
	T Add(T a,T b){
		return a+b;
	}
};

int main(int argc, char* argv[])
{
	{
		int a=10;
		int b=20;
		test<int> cls;
		int c=cls.Add(a,b);
		printf("%d\n",c);
	}	
	{
		double a=10;
		double b=20;
		test<double> cls;
		double c=cls.Add(a,b);
		printf("%f\n",c);
	}	
	return 0;
}

■テンプレート定数1

template <int iLoop=1>
class test{
public:
	void show(){
		for(int i=0;i<iLoop;i++){
			printf("%d\n",i);
		}
	}
};

int main(int argc, char* argv[])
{
	test<10> cls;
	cls.show();
	return 0;
}
結果は 0から9までの値を表示します。

■テンプレート定数2

template <class T,int iLoop=1>
class test{
public:
	T data[iLoop];
	//この中でメソッドを書けばソートしたりできます。
};

int main(int argc, char* argv[])
{
	test<int,4> cls;
	cls.data[0]=1;
	cls.data[1]=2;
	cls.data[2]=3;
	cls.data[3]=4;

	test<double,2> cls2;
	cls2.data[0]=0.1;
	cls2.data[1]=0.2;

	return 0;
}



▲トップページ > Windows と C++