c++ - 是否可以将任何类型的函数存储在一个变量中?

标签 c++ function variables

我正在尝试制作一个菜单数组,其中每个元素都是一个结构,用于存储文本变量、需要按下以选择该项目的键和在该键按下时调用的函数(类似于“退出”、'Q ', 退出())。我认为这会让事情变得更有效率,但我找不到一种方法让它适用于各种函数和参数类型(例如,一个项目应该能够调用一个没有参数的 void 函数,另一个是一个类 int 函数两个参数等)。有没有好的方法可以做到这一点,还是我最好放弃这个想法?

编辑:谢谢大家的建议!提议的解决方案对我的新手来说感觉有点太复杂,但试图理解它们给了我一些想法!我最终让第三个变量包含一个枚举而不是直接函数调用,然后创建了一个 switch 函数,它根据该值调用其他函数。

最佳答案

实际上有几种方法可以做到这一点。

一种方法是使用std::bind 将所有函数绑定(bind)到void func(void) 然后你可以将它们平均存储。
另一种方法是创建一个通用函数/lambda 来调用您的函数。
要存储您的函数,您可以使用 std::function

还可以考虑覆盖类的 operator()

关于c++ - 是否可以将任何类型的函数存储在一个变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55238001/

相关文章:

c++ - ROS、opencv3 和 CMake - 无法删除库

c - '=' token 之前出现错误 : expected ',' , ';' 、 'asm' 、 '__attribute__' 或 '{' |具有冒泡排序功能

excel - vba - 在循环中调用函数

c++ - 无法理解部分代码(位操作)

c++ - 获取作为类变量的双端队列大小时的未定义行为

c++ - 子类化后编辑控件无法获得焦点或设置文本

R:从函数获取规则

php - 将多个字段的值相加然后插入 php 中的 MySQl 列

php - 如何获取字符串中值的真实类型?

php - 如何将变量从 PHP 传递到 Flash (ActionScript 3)