Prikaz jedne poruke
Stara 10.2.2012, 23:06   #13
Belphegor
V.I.P. Programiranje
 
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
Određen forumom Re: How to... C++

Ne mozes te operatore na enumaraciju!
Koliko vidim po tvom kodu hoces da drzis flagove u enumaraciji, onda moras drugacije i koristiti:
Kod:
enum TehFlagz { Flag1 = 1, Flag2 = 2, Flag3 = 4, Flag4 = 8 };  
class TehClass {     
    int flagz; 
public:     
    void setFlagz(TehFlagz someFlagz) {flagz |= someFlagz;}     
    void unsetFlagz(TehFlagz someFlagz) { flagz &= ~someFlagz; }
};  
// i onda 
 int main(void) 
{     
    TehClass obj;    
    obj.setFlagz(Flag1 | Flag2);   
     obj.unsetFlagz(Flag3 | Flag4); 
}
EDIT: iskopirao sam kod od teba pa se pokarabasio format
Mozes samo da postavis na neki element koji ima:
Kod:
TehFlagz f;
...
f = Flag2;//recimo
Ovo sam sad napamet pisao, mozda sam pogresio negde.

2.
Citat:
...da li se izraz u zagradi evaluira u flagz LValue ili RValue...
Sve sto ima "ime", odnosno mozes da mu uzmes adresu je LValue. Mada ne vidim kakve veze ima sa ovim kodom?

Ovaj izraz je RValue:
Kod:
Flag3 | Flag4
Ovo je LValue:
Kod:
void foo(int i)
{
    // mozes uzeti adresu od i 
}
Belphegor je offline   Odgovor sa citatom ove poruke