У вашего дизайна есть проблема - сейчас у вас есть несколько классов с одинаковым именем NumInfo<float>
и разными определениями (в зависимости от T
).Чтобы это исправить, вам понадобится второй параметр шаблона, например:
template<typename S, typename T=S>
struct NumInfo
{
T x;
S y;
void Print();
};
template<typename S, typename T>
void NumInfo<S,T>::Print()
{
/*.....*/
}
template<typename T>
struct NumInfo<float,T>
{
T x;
float y;
void Print();
};
template<typename T>
void NumInfo<float,T>::Print()
{
/*.....*/
}