我可以在构造函数参数中定义要在函数指针中使用的函数

时间:2014-01-07 13:27:53

标签: c++ function pointers

我正在尝试创建一个按钮类型系统,它有四个funtcions(激活,取消激活,选择,取消选择),我将这四个函数作为函数指针。

我想知道是否可以在构造函数中使用这些参数,然后能够在构造函数中动态定义函数。

类似的东西:

Button({(if a == 1) a++},{(if a == 2) a--}) 

如果可能的话,我真的不知道这会被称为什么,所以很难准确地搜索我正在寻找的东西。

由于

2 个答案:

答案 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--;});

Live example