/ / Jak używać struct jako operandu warunkowego? - c ++, c ++ 11, struct, przeciążenie operatora, warunkowe

Jak użyć struct jako operand warunkowego? - c ++, c ++ 11, struct, przeciążenie operatora, warunkowe

Mam prostą strukturę w C ++ 11

struct a {
int a;
int b;
int c;
....
}

Chciałbym użyć tej struktury tak, jakby był to typ skalarny, więc przeciąłem wszystkie operatory.

Jedno zachowanie Nie mogę znaleźć sposobu zdefiniowania użycia struct w instrukcji if:

a v = {1,2,3};
if (v) { }

Czy istnieje operator, który mogę przeciążać, aby włączyć to zachowanie? Chcę standardowe zachowanie: jeśli dowolny bit jest 1 w strukturze to prawda, w przeciwnym razie jest to fałsz.

Odpowiedzi:

16 dla odpowiedzi nr 1

Dodaj jawną konwersję boolowską:

struct a
{
explicit operator bool() const
{
return a || b || c;
}

int a;
int b;
int c;
// ...
};