Ету задачу задал мне преподователь во время учебного года и я ее не решил.
Если эту, то бредовая задачка. Какой смысл в "грязных хаках" объектно-ориентированной инфраструктуры языка программирования? Зачем ломать язык, когда можно просто использовать ООП?
В случае необходимости вызова разных функций-не членов, используя свойство виртуальности функций-членов, так можно просто их вызывать:
void f1() {}
void f2() {}
class X
{
public:
virtual void m() { f1(); }
};
class Y: public X
{
public:
virtual void m() { f2(); }
};
и не городить огород с расчётом адресов и возни с передачей this.