我正在尝试制作一个菜单数组,其中每个元素都是一个结构,用于存储文本变量、需要按下以选择该项目的键和在该键按下时调用的函数(类似于“退出”、'Q ', 退出())。我认为这会让事情变得更有效率,但我找不到一种方法让它适用于各种函数和参数类型(例如,一个项目应该能够调用一个没有参数的 void 函数,另一个是一个类 int 函数两个参数等)。有没有好的方法可以做到这一点,还是我最好放弃这个想法?
编辑:谢谢大家的建议!提议的解决方案对我的新手来说感觉有点太复杂,但试图理解它们给了我一些想法!我最终让第三个变量包含一个枚举而不是直接函数调用,然后创建了一个 switch 函数,它根据该值调用其他函数。
最佳答案
实际上有几种方法可以做到这一点。
一种方法是使用std::bind
将所有函数绑定(bind)到void func(void)
然后你可以将它们平均存储。
另一种方法是创建一个通用函数/lambda 来调用您的函数。
要存储您的函数,您可以使用 std::function
。
还可以考虑覆盖类的 operator()
。
关于c++ - 是否可以将任何类型的函数存储在一个变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55238001/