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 pinState;

    public:
    explicit GpioPin(Level pinState) : pinState(pinState) {};

    GpioPin& operator=(Level _pinState)
    {
        this->pinState = _pinState;
        return *this;
    }

    operator int() const
    {
        return static_cast<int>(this->pinState);
    }

};

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

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

    pin = static_cast<Level>(next);

    cout << pin;

    return 0;
}

Solving Approach

 

 

 

 

Upvote
Downvote
Loading...

Input

0 1

Expected Output

1