// テンプレート構造体
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);
コメントをかく