如何创建一个可以从 C 中任何类型的 GTK+ 2.0 小部件继承的类?我知道如果我要使用 C++,我会有一个模板,它继承自它的参数并添加我需要的行为,如果我要使用 Objective-C 做类似的事情,我可能会使用 NSProxy 并将消息转发给类成员这是真正的视图控制器,但我不知道如何使用 GTK+ 2.0 在 C 中完成相同的任务。
如何创建一个可以从 C 中任何类型的 GTK+ 2.0 小部件继承的类?
PS有些人会问为什么。问为什么是公平的。正如我之前的问题所见,哪些 GUI 库不是面向对象的?我一直在挑战自己以非面向对象的方式进行编程。因为我想以非面向对象的方式进行编程,所以我需要对 GTK+ 2.0 中可用的所有类进行抽象,以呈现我想要的那种行为。具体来说,我需要让每个班级都继续工作。
一个简单的延续实现是:
struct CONTINUATION;
typedef struct CONTINUATION continuation;
struct CONTINUATION {
void* environment;
continuation (*ip)(void*);
};
一个想要向它的延续发送消息的类将不断地用它的 ip 应用到它的环境的结果替换它的延续,直到 ip 值指向(存根)函数 event_get。然后,该类将使用环境中的信息进行适当的响应,并获得新的延续,这样循环就可以重新开始下一条消息。