我的困境是我想创建一个计时器(也称为“警报”,使用 Game Maker 术语),它可以在时间到期后调用任何函数。不仅仅是让它基于特定的签名调用特定的函数指针。
所以,一个简单的问题:这可能吗?
我的困境是我想创建一个计时器(也称为“警报”,使用 Game Maker 术语),它可以在时间到期后调用任何函数。不仅仅是让它基于特定的签名调用特定的函数指针。
所以,一个简单的问题:这可能吗?
您可以使用 C++11std::function
并std::bind
在计时器到期后包装您想要调用的任何函数。
我有一个接收鸡蛋和奶酪并返回煎蛋卷的函数。我把我的功能交给你的计时器。当定时器的闹钟响起时,你会用什么鸡蛋和什么奶酪来调用我的函数?——罗伯特·库珀
@RobertCooper 和你给我的鸡蛋和奶酪当然是你给我的功能!– 夜莺
@nightcracker:所以当我设置闹钟时,我需要给计时器一个功能,一个鸡蛋和一个奶酪。再说一次,如果我的回调取而代之的是培根、HomeFries、香肠和燕麦片,我需要给警报一个函数,培根、HomeFries、香肠和燕麦片。对于任何数量和类型的组合,警报必须能够记住和存储这些类型的成员,以供以后在回调函数中使用。
我不建议建造一个能够存储任何烹饪用品组合的警报器。保持警报的类型签名不变且简单。如果客户想要发出警报来做早餐、组建乐队或发射火箭飞船,让客户将他们需要的任何函数和变量包装成一个简单的仿函数或 lambda 函数:一个记住它需要的所有变量并且只一种将其关闭的方法(operator ()
不带参数调用)。