(1)定义基本模板类:
template<class T>
class NumTraits
{
};
(2)模板特化
temlate<>
class NumTraits<CIntArray>
{
public:
typedef int resulttype;
typedef int inputara;
};
temlate<>
class NumTraits<CFloatArray>
{
public:
typedef Float resulttype;
typedef Float inputara;
};
(3) 统一模板调用类编制
temlate<class T>
class CApply
{
public:
typedef NumTraits<T>:: resulttype result;
typedef NumTraits<T>:: inputara input;
result GetSum(T& obj,input in)
{
return obj.GetSum(in);
}
};
附:CIntArray与CFloatArray类的定义
#include<iostream>
using namespace std;
class CIntArrary
{
int a[10];
public:
CIntArrary()
{
for(int i=0;i<10;i++)
{
a[i]=i;
}
}
int GetSum(int times)
{
int sum =0;
for(int i=0;i<10;i++)
{
sum+=a[i];
}
return sum*times;
}
}
class CFloatArrary
{
float a[10];
public:
CFloatArrary()
{
for(int i=1;i<=10;i++)
{
a[i-1]=10f/i;
}
}
float GetSum(float times)
{
float sum =0.0f;
for(int i=0;i<10;i++)
{
sum+=a[i];
}
return sum*times;
}
}