typedef struct AdvancedFoo { BaseFoo super; int a, b, c; thinkfunc_t thinkHarder; } AdvancedFoo;
AdvancedFoo *advFoo = AdvancedFoo_new(); advFoo->thinkHarder(advFoo, advFoo->a); ((BaseFoo*) advFoo)->doThink(advFoo, some_int_method());