C ++ 'sobrecarga' la sentencia if ()

¿Es posible cambiar el comportamiento deif() así que eso:

class Foo {
    int x;
};

Foo foo;
if(foo)

sólo procede si el valor dex es algo mas que cero? o...

¿Sería un enfoque apropiado una conversión de tipo explícita definida por el usuario para int / trabajo? o...

¿Es mejor hacer algo como?if(foo.getX())?

Respuestas a la pregunta(2)

Su respuesta a la pregunta