Temat być może trochę zagmatwanie napisany, ale chodzi o to, że mam enum
#define bit(x) 1 << x
#define ZwrocWartosc1 5
#define ZwrocWartosc2 3
#define ZwrocWartosc3 15
enum JakisEnum
{
Wartosc1 = bit(1),
Wartosc2 = bit(2),
Wartosc3 = bit(3)
};
unsigned int ZwrocWartosc(JakisEnum enum)
{
switch(enum)
{
case Wartosc1: return ZwrocWartosc1 ; break;
case Wartosc2: return ZwrocWartosc2 ; break;
case Wartosc3: return ZwrocWartosc3 ; break;
}
return 0;
}
I chciałbym aby funkcja ZwrocWartosc mogła przyjmować parametr jak na przykład JakisEnum::Wartosc1 | JakisEnum::Wartosc2
. Powinna ona wtedy zwrócić 8
Niestety tych #define ZwrocWartoscX
nie mogę usunąć ani zamienić na nic innego.
Trochę nad tym myślałem ale większość moich pomysłów po prostu okazała się niewypałem.
W jaki sposób mógłbym to wykonać?