Standardna biblioteka ima
bitset, koja bi mogla da ti koristi.
Primer:
Kod:
#include <iostream>
#include <bitset>
enum { Flag1 = 0, Flag2, Flag3, Flag4 };
typedef std::bitset<4> Flags;
std::string printbool( bool value )
{
return (value ? "true" : "false");
}
std::ostream& operator << ( std::ostream& str, Flags const& value )
{
str << "Flags {" << std::endl;
str << "\tFlag1 = " << printbool(value[Flag1]) << std::endl;
str << "\tFlag2 = " << printbool(value[Flag2]) << std::endl;
str << "\tFlag3 = " << printbool(value[Flag3]) << std::endl;
str << "\tFlag4 = " << printbool(value[Flag4]) << std::endl;
str << "}" << std::endl;
return str;
}
int main()
{
Flags flags;
flags.set(Flag1, true);
flags.set(Flag2, false);
flags.set(Flag3, true);
flags.set(Flag4, false);
std::cout << flags << std::endl;
flags = Flags(std::string("1011"));
std::cout << flags << std::endl;
flags = Flags(0x3); // 0011
std::cout << flags << std::endl;
return 0;
}
Izlaz progama je:
Kod:
Flags {
Flag1 = true
Flag2 = false
Flag3 = true
Flag4 = false
}
Flags {
Flag1 = true
Flag2 = true
Flag3 = false
Flag4 = true
}
Flags {
Flag1 = true
Flag2 = true
Flag3 = false
Flag4 = false
}
Uzmi u obzir da broj dozvoljenih flegova moraš da znaš u vreme kompajliranja. Ako ti treba promenljivi broj flegova, razmotri boost::dynamic_bit_set