Без примера не ясно, кто на ком стоял. Про какой параметр речь -
параметр шаблона или передаваемый в функцию? Если почему-то не катят виртуальные функции, то можно завести в классе указатель на функцию класса, который инициализируется в конструкторе на f() или super_f(). И вызывать через указатель.
Как-то так (сильно не старался, могут быть ошибки, но принцип рабочий. Через такой указатель работает вызов и виртуальных функций):
class BaseClass;
typedef void (BaseClass::*BaseClassCB)(int param);
class BaseClass
{
BaseClassCB EventFunc;
...
};
class Class1 : public BaseClass
{
void f(int param);
Class1() EventFunc((BaseClassCB)(&Class1::f)) { }
};
class Class2 : public BaseClass
{
void super_f(int param);
Class2() EventFunc((BaseClassCB)(&Class2::super_f)) { }
};