Imam pitanje života ili smrti.
Kako u C++-u može da se radi compound assignment nad promenljivom koje deklarisana kao enum tipa, a da mi kompajler ne baci drvlje i kamenje. Jel ima neki switch kompajlera koji će da mu naredi da samo proguta to jer je enum samo int. Ako nema, kako se ovo radi najlakše?
Ide ovako:
Kod:
enum TehFlagz { Flag1 = 1, Flag2 = 2, Flag3 = 4, Flag4 = 8 };
class TehClass {
TehFlagz flagz;
public:
void setFlagz(TehFlagz someFlagz) {flagz |= someFlagz;}
void unsetFlagz(TehFlagz someFlagz) {(flagz |= someFlagz) ^= domeFlagz}
};
// i onda
int main(void) {
TehClass obj;
obj.setFlagz(Flag1 | Flag2);
obj.unsetFlagz(Flag3 | Flag4);
}
Takođe me interesuje da li ono što sam napisao u drugom metodu radi ono što ja očekujem (da li se izraz u zagradi evaluira u flagz LValue ili RValue), pod uslovom da ga kompajler proguta (u vezi sa prvim problemom).