#include "main.h" #include "Father.h" int testage; int testage2; int main(void) { Girl_t Girltest; Girl_t Girltest2; GirlArgs(&Girltest); Girltest.SetAge(33); testage = Girltest.GetAge(); GirlArgs(&Girltest2); testage2 = Girltest.GetAge(); while (1) { } } #include "Father.h" struct GirlPrivates { int Age; }GirlP; //全局 this 指针,指向当前操作的对象 static Girl_t *pthis; //获取私有数据 #define p_Pointer(object) ((struct GirlPrivates *)(object->inner)) int GetAge(void) { return p_Pointer(pthis)->Age; } void SetAge(int age) { p_Pointer(pthis)->Age = age; } void GirlArgs(Girl_t *object) { pthis = object; pthis->inner = &GirlP; pthis->GetAge = GetAge; pthis->SetAge = SetAge; } #ifndef __FATHER_H #define __FATHER_H #include "main.h" typedef struct Girl Girl_t; typedef struct Girl { void *inner; int (*GetAge)(void); void (*SetAge)(int age); }Girl_t; void GirlArgs(Girl_t *object); #endif