ポリモーフィズムを使用して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を明示的に渡さずに何かを記述できるようにしたいと思います。何か案は?いくつかのマクロトリックかもしれませんか?