这是设置枚举位的正确方法吗?

问题描述 投票:0回答:1

我有按位枚举来保存某个类的两种状态设置。我尝试开发简单的功能来打开或关闭该位。 这是正确且快速的方法吗?

enum myEnum { eeNull = 0, ee1 = 1, ee2 = 2, ee4 = 4, ee8 = 8 };

template<class T>
inline T &SetBit(T &eValue, const int iBit, const bool bState)
{
    return eValue = (T) ((eValue| (iBit * bState)) & ~(iBit * !bState));
}

int main()
{
    myEnum eE;

    eE = eeNull;

    SetBit<myEnum>(eE, ee2, true);
    SetBit<myEnum>(eE, ee1, true);
    SetBit<myEnum>(eE, ee2, false);
    return 0;
}
c++ enums bit bitwise-operators
1个回答
0
投票

这是您通常会这样做的方式:

enum myEnum {
    ee1 = 1 << 0,
    ee2 = 1 << 1, 
    ee3 = 1 << 2, 
    ee4 = 1 << 3 
};

int main() {
    int flag = ee1 | ee3 | ee4;
}
© www.soinside.com 2019 - 2024. All rights reserved.