Я использовал Любопытно повторяющийся шаблон Общий код выглядит так:
template <typename T> void genericFunction(T &);
template <typename T> struct Functionality {
void genericMethod() {
genericFunction(*((T *)this)) ;
}
};
struct Klass : public Functionality<Klass> {};
void main() {
Klass obj ;
obj.genericMethod();
}
template <> void genericFunction<Klass>(Klass &obj) {
//do stuff with Klass &obj here
}
Сегодня я столкнулся с ошибкой, которая стоила мне около 90 минут разочарования, эта ошибка была вызвана использованием неверного параметра шаблона для моего объявления наследования базового класса, что-то вроде этого:
struct Klass : public Functionality<SomeOtherKlass> {}; //SomeOtherKlass wrong!!!
Я бы хотел улучшить свой код, чтобы было обнаружено это несоответствие между производным классом и параметром шаблона базового класса (время выполнения, время компиляции, в любое время :)), возможно ли это вообще ?, спасибо.