> Brush *miggy_brush_init () > { > MyBrush *m = g_new0 (MyBrush, 1); > m->base.vtable.init = miggy_init; > m->base.vtable.paint = miggy_paint. > m->v = 1; > > return m; > } I hate to ask the obvious question here: why not use C++ since that is exactly what it's designed to do? Piers.