Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- OBJ example
- */
- // "interface"
- struct interface
- {
- struct interface_tab * iface;
- };
- union interface_obj {
- struct interface iface;
- // all calssese with this interface
- struct class1 class1;
- };
- struct interface_tab
- {
- int (*metod1)(union interface_obj * ,int,int);
- int (*metod2)(union interface_obj * ,int);
- };
- // class implemeted "interface"
- struct class1
- {
- struct interface_tab * iface;
- int field1;
- int field2;
- };
- int class1_metod1(union interface_obj * self ,int a,int b)
- {
- self->class1.field1=a;
- self->class1.field2=b;
- return(1);
- }
- int class1_metod2(union interface_obj * self ,int a)
- {
- return(self->class1.field1*a + self->class1.field2);
- }
- static struct interface_tab class1_iface =
- {
- class1_metod1,
- class1_metod2,
- };
- // instance "class1" named "obj"
- struct class1 class1_obj={&class1_iface,0,0};
- // go on:
- int main ()
- {
- union interface_obj * obj = (union interface_obj *)&class1_obj;
- obj->iface.iface=&class1_iface;
- obj->iface.iface->metod1(obj,3,6);
- printf("result:%i\n",
- obj->iface.iface->metod2(obj,10)
- );
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement