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 1Dodaj jawną konwersję boolowską:
struct a
{
explicit operator bool() const
{
return a || b || c;
}
int a;
int b;
int c;
// ...
};