Как бы структура в С++ - это своего рода класс с публичными полями и методами, в то время, как в Си структура может иметь только поля.
Но если хотите поизвращаться, то можно внутри структуры хранить ссылки на функции, а уже их вызывать как методы (правда, первым параметром нужно будет саму структуру передавать).
Например, вырву кусок кода из вашего листинга:
typedef struct {
// какой-то код
// указатель на функцию - "метод" класса
void (*start)(struct app*);
} App;
void app_start(App *app)
{
// какой-то код
}
App *app_new(void)
{
// какой-то код
// собственно, задаем адрес функции
app->start = &app_start;
return app;
}
int main(void)
{
App *app = app_new();
// Вуаля - вызываем как метод класса
app.start(&app);
return 0;
}