Then use bitwise operators to set named bits that you then inspect so as to populate the struct of bools. Or instead of bitwise operations, you can use function chaining to set the members of the struct of bools directly in a consistent manner.
EDIT:
Actually, if you are going to use bitwise operations, it probably doesn't make sense to translate it into a struct of bools. You might as well go with an unsigned int or std::bitset. std::vector<bool> probably isn't that good a fit either since you have a fixed number of flags. The key to overcoming "I don't see the labels, just the indices" is to combine these bitwise operations with an enum of the properties.
If you do go with a struct of bools, then the function chaining thing should fit the bill quite well, e.g.,
Code:
struct Flags
{
bool red = false;
bool green = false;
bool thin = false;
bool young = false;
Flags& Red()
{
red = true;
return *this;
}
Flags& Green()
{
green = true;
return *this;
}
Flags& Thin()
{
thin = true;
return *this;
}
Flags& Young()
{
young = true;
return *this;
}
};
// ...
MyClass Example(Flags().Red().Green().Young());