2025-06-25【c++】enum class bitmask operator override

c++ – How to overload |= operator on scoped enum? – Stack Overflow

UENUM(BlueprintType)
enum class ECubeBaseDirection : uint8
{
    n = 0,
    s = 0x01,
    w = 0x02,
    e = 0x04,

    ne = n | e,
    ns = n | s,
    nw = n | w,
    es = e | s,
    ew = e | w,
    sw = s | w,

    nes = n | e | s,
    nwe = n | e | w,
    nsw = n | s | w,
    esw = e | s | w,

    nswe = n | s | w | e,
};

inline ECubeBaseDirection operator |(ECubeBaseDirection a, ECubeBaseDirection b)
{
    return static_cast<ECubeBaseDirection>(static_cast<int>(a) | static_cast<int>(b));
}

inline ECubeBaseDirection operator &(ECubeBaseDirection a, ECubeBaseDirection b)
{
    return static_cast<ECubeBaseDirection>(static_cast<int>(a) & static_cast<int>(b));
}

inline ECubeBaseDirection& operator |=(ECubeBaseDirection& a, ECubeBaseDirection b)
{
    return a= a |b;
}

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
X35075的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容