【发布时间】:2012-02-14 14:45:00
【问题描述】:
是否可以在 C 中模拟对象方法?我希望能够自引用一个结构作为成员函数参数的参数,例如:
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)。看起来很长,但它会很漂亮:)
【问题讨论】:
-
好吧,因为所有其他语言都模拟对象方法,并且它们中的大多数至少部分在 C 中实现......(这将很有帮助:www.planetpdf.com/codecuts/pdfs/ooc。 pdf)
-
如果你想要 C++,为什么不直接使用 C++ 编译器?
-
@BoPersson - 因为他试图实现的 OO 不是 C++ 的对象模型?
标签: c oop object emulation self-reference