0

typedef所以我一直在通过使用“类”结构和“d'实例”结构制作一个简单的小堆栈来修补 C 中的面向对象。类结构简单地充满了对指向实例结构的指针进行操作的函数指针。当我第一次这样做时,我对自己说:“我将在初始化实例结构时绑定指针!” 你可能会猜到这不起作用,因为我的初始化函数实际上是一个还没有被赋值的指针。

(现在几乎是凌晨 5 点——比就寝时间更接近起床时间)

所以,我问是否有任何方法可以有效地绑定运行时的函数指针,这样我就不需要显式调用绑定它们的函数——我在想可能是atexit.

4

1 回答 1

2

如果“类”结构始终相同,则可以静态初始化它:

void do_x_to_instance(instance *);
struct class_type {
    void (*do_x)(instance *);
    ...
} myclass = {
    &do_x_to_instance,
    ...
};

例如,这就是 Python C API 定义扩展类型的方式。

于 2012-07-20T10:10:36.403 回答