C++:创建一个可以调用任何函数的计时器/警报类

c++: creating a timer/alarm class that can call any function?

本文关键字:函数 任何 计时器 调用 创建 一个 C++      更新时间:2023-10-16

我的困境是我想创建一个计时器(也称为"闹钟",使用Game Maker术语(,可以在时间到期后调用任何函数。不仅仅是让它基于特定的签名调用特定的函数指针。

所以,简单的问题:这可能吗?

您可以使用

C++11 的 std::functionstd::bind 来包装要在计时器到期后调用的任何函数。

问答与问题海报

我有一个函数,可以接收鸡蛋和奶酪并返回煎蛋卷。我将我的函数交给您的计时器。当计时器的闹钟响起时,你会用什么鸡蛋和什么奶酪来称呼我的函数?- 罗伯特·库珀

@RobertCooper 当然,

当你交给我功能时,你给了我鸡蛋和奶酪!

@nightcracker:所以当我设置闹钟时,我需要给计时器一个功能,一个鸡蛋和一个奶酪。 再说一次,如果我的回调改为接受培根、自制薯条、香肠和燕麦片,我需要给闹钟一个功能,培根、自制薯条、香肠和燕麦片。 对于任意数量和类型的组合,警报必须能够记住并存储这些类型的成员,以便以后在回调函数上使用。

建议

我不建议构建能够存储任何烹饪用品组合的警报器。 保持警报的类型签名不变且简单。 如果客户端想要发出警报来做早餐或组建乐队或发射火箭飞船,请让客户端将他们需要的任何函数和变量包装到一个简单的函子或 lambda 函数中:一个记住它需要的所有变量并且只有一种方法来设置它(operator (),调用时没有参数(。

相关文章: