#include <stdio.h> #ifndef C_Class #define C_Class struct #endif C_Class A { C_Class A* A_This; //this pointer of c class int value; void (*set)(C_Class A* A_This, int v); void (*print)(C_Class A* A_This); }; void Set(C_Class A* pa, int v) { pa->value = v; } void Print(C_Class A* pa) { printf("a = %d/n", pa->value); } void A_Create(C_Class A* pa) { pa->A_This = pa; pa->set = Set; pa->print = Print; } int main() { C_Class A a; A_Create(&a); a.set(a.A_This, 2); a.print(a.A_This); return 0; }