私はインターフェイスクラス、関数のテーブルへのポインタが含まれている多型を、使用してCでいくつかのオブジェクト指向スタイルのプログラミングをしたいです。例:エレガントな方法はありますか?
/* Implement polymorphism in C, Linux kernel-style */
struct statement {
const struct statement_ops *ops;
struct list_head list; /* when on master input list */
void *private; /* pointer to type-specific data */
};
struct statement_ops {
int (*analyse)(void *private, int pc);
int (*get_binary_size)(void *private);
};
void user(void)
{
struct statement *s = make_a_statement();
if (s->ops->analyse(s->private, foo))
blah blah;
}
明示的にs-> privateをすべての「メソッド」に渡すことなく何かを書くことができるようにしたいと考えています。何か案は?おそらくいくつかのマクロトリックですか?
かなり十分ですが、マクロラッピングの可能性があるほど良いと思います。私はCamelCaseへの個人的な嫌悪感を持っている:) – blueshift