プログラミングに関する小ネタ、Tips、その他色々

  • テンプレートと特殊化事例
// テンプレート構造体
template<typename T>
struct StrData
{
	T buff[32];
};

// テンプレート関数持ちのクラス
class TestClass
{
public:
	template<typename T>
	 void Read(T a, StrData<T>& st);
};
// 特殊化の定義
template<> void TestClass::Read(char a, StrData<char>& st);
template<> void TestClass::Read(wchar_t a, StrData<wchar_t>& st);

template<> void TestClass::Read(char a, StrData<char>& st)
{
	for (int i = 0; i < 32; i++) {
		st.buff[i] = a;
	}
}
template<> void TestClass::Read(wchar_t a, StrData<wchar_t>& st)
{
	for (int i = 0; i < 32; i++) {
		st.buff[i] = a;
	}
}

// 利用例
int _tmain(int argc, _TCHAR* argv[])
{
	StrData<char> sta;
	StrData<wchar_t> stb;
	TestClass test;
	char a = 'A';
	test.Read(a, sta);
	wchar_t b = L'あ';
	test.Read(b, stb);


コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

カテゴリ

プログラミング言語

スクリプト言語

プラットフォーム

ライブラリ

その他

編集テスト用メニュー

【メニュー編集】

管理人/副管理人のみ編集できます