// Example program
#include <iostream>
#include <string>
class B{
public:
virtual int prva()=0;
virtual int druga(int)=0;
};
class D: public B{
public:
virtual int prva(){return 42;}
virtual int druga(int x){return prva()+x;}
};
typedef int (*PTRFUN1)(void* that);
typedef int (*PTRFUN2)(void* that, int x);
void function (B* var){
void** vptr = *(void***)var;
PTRFUN1 fun1 = (PTRFUN1)vptr[0];
PTRFUN2 fun2 = (PTRFUN2)vptr[1];
printf("Prva:%d\n", fun1(var));
printf("Druga:%d\n", fun2(var, 2));
}
int main(){
B *pb = new D();
function(pb);
}