January 2018
Intermediate to advanced
374 pages
9h 53m
English
Let's put the std::function to use in something that resembles a real-world example. If we create a Button class, we can use the std::function to store the action corresponding to clicking the buttons, so that when we call the on_click() member function, the corresponding code is executed.
We can declare the Button class like this:
class Button {
public:
Button(std::function<void(void)> click) : on_click_{click} {}
auto on_click() const { on_click_(); }
private:
std::function<void(void)> on_click_{};
};
We can then use it to create a multitude of buttons with different actions. As each button still has the same type, they can also be stored in a container:
auto make_buttons() { auto beep_button ...