C++:创建一个可以调用任何函数的计时器/警报类
c++: creating a timer/alarm class that can call any function?
我的困境是我想创建一个计时器(也称为"闹钟",使用Game Maker术语(,可以在时间到期后调用任何函数。不仅仅是让它基于特定的签名调用特定的函数指针。
所以,简单的问题:这可能吗?
您可以使用
C++11 的 std::function
和 std::bind
来包装要在计时器到期后调用的任何函数。
问答与问题海报
我有一个函数,可以接收鸡蛋和奶酪并返回煎蛋卷。我将我的函数交给您的计时器。当计时器的闹钟响起时,你会用什么鸡蛋和什么奶酪来称呼我的函数?- 罗伯特·库珀
@RobertCooper 当然,当你交给我功能时,你给了我鸡蛋和奶酪!
@nightcracker:所以当我设置闹钟时,我需要给计时器一个功能,一个鸡蛋和一个奶酪。 再说一次,如果我的回调改为接受培根、自制薯条、香肠和燕麦片,我需要给闹钟一个功能,培根、自制薯条、香肠和燕麦片。 对于任意数量和类型的组合,警报必须能够记住并存储这些类型的成员,以便以后在回调函数上使用。
建议
我不建议构建能够存储任何烹饪用品组合的警报器。 保持警报的类型签名不变且简单。 如果客户端想要发出警报来做早餐或组建乐队或发射火箭飞船,请让客户端将他们需要的任何函数和变量包装到一个简单的函子或 lambda 函数中:一个记住它需要的所有变量并且只有一种方法来设置它(operator ()
,调用时没有参数(。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- C++模板函数,用于比较任何无符号整数和有符号整数
- 是否有任何建议来统一函数类型限定符并简化可恶的函数类型?
- C++中是否有任何函数等同于python中字典的get函数?
- 用于检查值是否为其任何参数的帮助程序函数
- C++ - 声明指向返回任何类型并获取任意数量参数的函数的指针
- VkSurfaceKHR 指针的值在函数调用后更改,无需任何显式赋值
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 不执行任何操作的函数调用C++
- 如何检测除整数以外的任何内容是否传递给我的类构造函数?
- 为什么 c++ 中的 main() 函数不采用除 int 和 void 之外的任何其他返回类型
- 检查模板中 nullptr 的函数指针,了解任何类型的可调用对象
- f 是指向函数的指针,该函数采用 int,并返回指向不带任何内容并返回双精度的函数的指针
- 如何制作可以接受任何类型的参数的 std::函数和 lambda
- 在调用其析构函数之前,是否有任何实际理由检查某些东西是否可破坏?
- 给定一个 3 x 3 矩阵或任何 n x n 矩阵,为什么我的以下函数找不到对角线差异?
- 接受任何 STL 容器的函数
- C++:单向跳转到函数.任何替代方案
- 从析构函数调用虚拟函数-任何解决方法