使用 typedef std::function<void(void *event)> FunInputEvent;
这种方式定义回调函数具有以下好处:
-
灵活性:通过使用
std::function
,可以定义接受不同类型参数和返回不同类型的回调函数。在这种情况下,回调函数接受一个void*
类型的参数event
,并且不返回任何值(void
)。这使得回调函数可以适应各种不同的情况和需求。 -
可替代性:
std::function
提供了一种机制,可以将不同类型的可调用对象(函数指针、函数对象、Lambda 表达式等)赋值给同一类型的变量。这意味着可以将不同的回调函数赋值给FunInputEvent
类型的变量,而无需更改变量的类型或接口。 -
封装性:通过使用
std::function
,可以将回调函数及其相关的上下文(例如捕获的变量)打包成一个对象。这使得回调函数可以方便地传递、存储和传递给其他函数,而无需显式传递额外的参数。 -
可扩展性:通过使用
std::function
,可以在不更改回调函数签名的情况下,为回调函数添加更多的逻辑和功能。可以通过使用函数对象、Lambda 表达式等来实现这一点。这使得回调函数的实现更加灵活和可扩展。
总体而言,使用 typedef std::function<void(void *event)> FunInputEvent;
这种方式定义回调函数可以提供更灵活、可替代、封装和可扩展的设计,使得回调函数在不同的上下文和应用中更易于使用和维护。