Здравствуйте, anagaf, Вы писали:
H>>Код который я привел раньшеАвтор: hramovnik
Дата: 16.10.09
не использует костыли и прекрасно работает.
H>>Может я чего то не понял?
A>Просто не хочется делать класс Tester шаблонным. Очень сложный шаблон может получиться, функций типа test несколько и у каждой по несколько параметров
Так и перегрузи их, а не объявляй шаблонными. А имплементацию сделай шаблоном:
//Tester.h
class A;
void foo(int);
void foo(long);
void foo(A);
//Tester.cpp
#include "Tester.h"
template<int N,class T>
void foo_impl(T);
template<class T>
void foo_impl<1>(T)
{
//Общая имплементация #1
}
template<class T>
void foo_impl<2>(T)
{
//Общая имплементация #2
}
void foo(int a)
{
return foo_impl<1,int>(a); //Имплементация #1
}
void foo(long a)
{
return foo_impl<1,long>(a); //Имплементация #1
}
void foo(A a)
{
return foo_impl<2,A>(a); //Имплементация #2
}
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]