Способ, которым я реализовал битовые флаги (чтобы процитировать прямо из моей кодовой базы, вы можете свободно использовать его для любых целей, даже коммерческих):
void SetEnableFlags(int &BitFlags, const int Flags)
{
BitFlags = (BitFlags|Flags);
}
const int EnableFlags(const int BitFlags, const int Flags)
{
return (BitFlags|Flags);
}
void SetDisableFlags(int BitFlags, const int Flags)
{
BitFlags = (BitFlags&(~Flags));
}
const int DisableFlags(const int BitFlags, const int Flags)
{
return (BitFlags&(~Flags));
}
Операция побитового сдвига не требуется.
Возможно, вам придется привести в порядок или изменить код, чтобы использовать конкретный набор переменных, который вы используете, но в целом он должен работать нормально.