GPIO Pin Operator Overload

#include <iostream>
using namespace std;

// Define enum class Level
enum class Level {
    LOW = 0,
    HIGH = 1
};

// Define class GpioPin with operator= and operator int()
class GpioPin {
private:
    Level lvl;
public:
    GpioPin(Level level) : lvl(level) {};
    
    void operator=(Level next) {
        lvl = next;
    }
    
    friend ostream& operator<<(ostream& os,const GpioPin& pin) {
        os << static_cast<unsigned int>(pin.lvl);
        return os;
    }
};

int main() {
    int init, next;
    cin >> init >> next;

    GpioPin pin(static_cast<Level>(init));

    pin = static_cast<Level>(next);

    cout << pin;

    return 0;
}
Upvote
Downvote
Loading...

Input

0 1

Expected Output

1