bool nullable to bool c#

#include <iostream>

class NullableBool {
private:
    bool hasValue;
    bool value;

public:
    NullableBool() : hasValue(false), value(false) {}

    NullableBool(bool value) : hasValue(true), value(value) {}

    bool HasValue() const {
        return hasValue;
    }

    bool GetValue() const {
        if (hasValue) {
            return value;
        } else {
            // Handle the case where value is not available.
            // In this example, returning a default value (false) for simplicity.
            return false;
        }
    }
};

int main() {
    NullableBool nullableBool; // Nullable bool in C++

    if (nullableBool.HasValue()) {
        // Convert nullable bool to bool in C++
        bool regularBool = nullableBool.GetValue();

        // Convert bool to C# bool
        bool csharpBool = static_cast<bool>(regularBool);
    } else {
        // Handle the case where value is not available in C++
        // In this example, using a default value (false) for simplicity.
        bool csharpBool = false;
    }

    return 0;
}