/ / Comment utiliser une structure en tant qu'opérande d'un conditionnel? - c ++, c ++ 11, struct, surcharge par l'opérateur, conditionnel

Comment utiliser une structure en tant qu'opérande d'un conditionnel? - c ++, c ++ 11, struct, surcharge par l'opérateur, conditionnel

J'ai une structure simple en C ++ 11

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

J'aimerais utiliser cette structure comme s'il s'agissait d'un type scalaire lui-même. J'ai donc surchargé tous les opérateurs.

Un comportement que je ne peux pas trouver comment définir est l’utilisation d’une structure dans une instruction if:

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

Existe-t-il un opérateur que je peux surcharger pour activer ce comportement? Je veux le comportement standard: si un bit est 1 dans la structure, il est vrai, sinon, il est faux.

Réponses:

16 pour la réponse № 1

Ajoutez une conversion booléenne explicite:

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

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