Prikaz jedne poruke
Stara 10.2.2012, 22:33   #12
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: How to... C++

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).

Poslednja ispravka: ivan90BG (10.2.2012 u 23:02)
ivan90BG je offline   Odgovor sa citatom ove poruke