Basic Lambda Callback

#include <iostream>
#include <string>
#include <functional> // Required for std::function

class Button {
private:
    // TODO: Declare a member to store the callback (std::function<void()>)
    std::function<void()> onClick;

public:
    // TODO: Implement setCallback
    void setCallback(std::function<void()> cb) {
        if ( cb != nullptr) onClick = cb;
    }

    // TODO: Implement press()
    void press() {
        // Check if onClick is valid, then call it
        if ( onClick != nullptr) onClick();
    }
};

int main() {
    Button btn;

    // TODO: Pass a Lambda expression to setCallback
    // The lambda should print "Action Executed!" followed by a newline
    btn.setCallback(
        [](){
            std::cout << "Action Executed!\n";
        }
    );

    int N;
    if (!(std::cin >> N)) return 0;

    for (int i = 0; i < N; ++i) {
        std::string cmd;
        std::cin >> cmd;

        if (cmd == "PRESS") {
            btn.press();
        }
    }
    return 0;
}

Solving Approach

 

 

 

 

Upvote
Downvote
Loading...

Input

2 PRESS IDLE

Expected Output

Action Executed!