gpt4 book ai didi

c - 是否可以在 C 中模拟对象方法?

转载 作者:行者123 更新时间:2023-12-04 10:55:03 26 4
gpt4 key购买 nike

是否可以在 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 中有面向对象的库,但它们将“this”对象显式传递给“方法”,如

bar->save(bar);

有关这种风格的示例,请参阅 Berkeley DB C API,但如果您想使用类似 C 的语言执行 OO,请考虑使用 C++ 或 Objective-C。

关于c - 是否可以在 C 中模拟对象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8934567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com