#include <stdio.h>
struct Base1{ virtual void func1() { printf("Base1 func1()\n"); } virtual void func2() { printf("Base1 func2()\n"); }};struct Base2:Base1{ virtual void func3() { printf("Base2 func3()\n"); }};struct Sub:Base2{ virtual void func1() { printf("Sub func1()\n"); } virtual void func3() { printf("Sub func3()\n"); }};void test()
{ int i = 0; Sub s; typedef void (*pFun)(void); pFun fun = NULL; //for (i = 0; i < 6; i++) { for (i = 0; i < 3; i++) { fun = (pFun)(*((long int *)(*(long int *)&s) + i)); fun(); }}int main(int argc, char **argv){ test();}