我想在 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 传递给每个“方法”的情况下编写一些东西。有任何想法吗?也许一些宏观技巧?