typedef unsigned int MyFlags;// Это инт для передачи по функциямenum FlagValue { FLAG_1 = 0x0001, FLAG_2 = 0x0010, FLAG_3 = 0x0100};// Это для хранения набора флагов//Задаем флаг( по одному)MyFlags setFlags( MyFlags value, FlagValue FLAG){ return value | FLAG;};//Читаем флаги( все разом)void loadFlag( MyFlags flags){ if((flags & FLAG_1) != 0) { //Значит задан FLAG_1 } if((flags & FLAG_2) != 0) { //Значит задан FLAG_2 } if((flags & FLAG_3) != 0) { //Значит задан FLAG_3 }};
struct CFlag { CFlag( unsigned int flag = 0 ) : mFlag(flag) {} bool Get( unsigned int flag ) const { return (mFlag & flag) == flag; } bool Has( unsigned int flag ) const { return (mFlag & flag) != 0; } void Set( unsigned int flag ) { mFlag |= flag ); void Clr( unsigned int flag ) { mFlag &= ~flag ); unsigned int mFlag;};