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:
Ovo je LValue:
Kod:
void foo(int i)
{
// mozes uzeti adresu od i
}