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

Can i define a function to be used in a function pointer, in a constructor argument

本文关键字:函数 指针 一个 参数 构造函数 定义 我可以      更新时间:2023-10-16

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

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

类似于:

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

等等。

如果可能的话,我真的不知道该怎么称呼,所以很难准确地搜索我想要的东西。

感谢

它被称为lambda表达式。在C++11中,您可以使用以下内容:

Button([](int&a){if (a == 1) a++;},[](int&a){if (a == 2) a--;}) 

在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--;});

实例