我正在尝试创建一个按钮类型系统,它有四个funtcions(激活,取消激活,选择,取消选择),我将这四个函数作为函数指针。
我想知道是否可以在构造函数中使用这些参数,然后能够在构造函数中动态定义函数。
类似的东西:
Button({(if a == 1) a++},{(if a == 2) a--})
等
如果可能的话,我真的不知道这会被称为什么,所以很难准确地搜索我正在寻找的东西。
由于
答案 0 :(得分:3)
它被称为lambda表达式。在C ++ 11中,您可以使用:
Button([](int&a){if (a == 1) a++;},[](int&a){if (a == 2) a--;})
答案 1 :(得分:1)
在C ++ 11中,您可以使用lambda表达式。
如果你想将它们存储在其他成员函数的后续调用中,你甚至可以将它们作为std::function
参数。
以这种方式声明你的构造函数:
Button(std::function<void(int&)> func1, std::function<void(int&)> func2);
并在创建实例时使用lambdas:
Button myButton([](int &a){a++;}, [](int &a){a--;});