我目前正在C语言中学习SDL,当我查看平常的tutoriaI时,遇到了一段有趣的代码。
为什么要使用它?
使用此样式有什么优势?
typedef struct{
void (*logic)(void);
void (*draw)(void);
}Delegate; /* Tags are just for exemplification */
我要在包括SDL的所有项目中使用这种方法吗?
答案 0 :(得分:0)
这是C语言中的一种多态性,您可以使具有不同行为(逻辑和绘制函数的不同实现)的相同类型的实例。例如,您可以迭代此类型的元素数组,并对每个元素执行不同的功能。如果可以,请避免使用函数指针,因为这样很难定义bug。明智地选择语言,如果您在项目中需要这种行为,并且可以选择语言,请使用一种包含OOP的语言,因为OO是出于这种原因而发明的(不仅如此)