【C++】テンプレート(template) ~<T>型 / クラスやメソッドを汎用的に使えるようにする~

テンプレート(template)

 * Java/C#ジェネリック(下記の関連記事を参照のこと)のようなことができる。

構文

Pattern1

template <class type> function-declarator

template<class T> void sample(T value);

Pattern2

template <typename type> function-declarator

template<typename T> void sample(T value);

サンプル

#include "stdafx.h"

using namespace std;

template<typename T>
T Plus(T value1, T value2) {
    return value1 + value2;
}
template<typename T, typename T1, typename T2>
T Minus(T1 value1, T2 value2) {
    return value1 - value2;
}

int main(array<System::String ^> ^args)
{
	int result1 = Plus<int>(1, 2);
	cout << result1 << endl;
	
	int value1 = 3;
	float value2 = 1.2f;
	double result2 = Minus<double, int, float>(value1, value2);
	cout << result2 << endl;

	return 0;
}


関連記事

Java

ジェネリックGenerics) ~<T>型 / クラスやメソッドを汎用的に使えるようにする~
http://blogs.yahoo.co.jp/dk521123/32099558.html

C#

ジェネリックGenerics) ~<T>型 / 入門編 ~
http://blogs.yahoo.co.jp/dk521123/22167448.html
ジェネリックGenerics) ~<T>型 / サンプルプログラム編 ~
http://blogs.yahoo.co.jp/dk521123/32873022.html