Cでオブジェクトメソッドをエミュレートすることはできますか?私は、実際にsave_foo(bar)
を呼び出し、bar->save()
メンバ関数の引数例えば: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();
}
にパラメータとして可能な自己参照に構造を可能にしたいと思います。長いショットのようですが、かなり滑らかです:)
他のすべての言語がオブジェクトメソッドをエミュレートし、そのほとんどがC言語で少なくとも部分的に実装されているため、
this
(別名bar
)を自動的に渡すことはできません。 .planetpdf.com/codecuts/pdfs/ooc.pdf) –C++が必要な場合は、単にC++コンパイラを使用するだけではいかがですか? –
@BoPersson - 彼が実装しようとしているオブジェクト指向はC++のオブジェクトモデルではないので? –