Можно ли эмулировать методы объекта в C? Я хотел бы иметь возможность самостоятельно ссылаться на структуру в качестве параметра на аргумент функции-члена, например ::100100
struct foo {
int a;
int (*save)(struct foo *);
};
int
save_foo(struct foo *bar) {
// do stuff.
}
struct foo *
create_foo() {
struct foo *bar = malloc(sizeof(struct foo));
bar->save = save_foo;
return bar;
}
int
main() {
struct foo *bar = create_foo();
bar->a = 10;
bar->save();
}
Где, bar->save()
, на самом деле звонит save_foo(bar)
. Похоже на длинный выстрел, но это было бы довольно гладко:)