重载否定运算符的反义词?

时间:2019-07-11 13:40:55

标签: c++ c++11

重载求反运算符很简单:

bool MyClass::operator!() const
{
    //return whatever comparison needs to be done
}

然后我可以写:

MyClass a;
if(!a)
{
    //Do something
}

但是我希望能够写:

if(a)
{
    //Do something
}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

if语句中的表达式将转换为bool。因此,您需要做的是使您的班级可转换为bool。这可以通过定义转换运算符来实现:

struct MyClass {
    explicit operator bool() const {
        return true;
    }
};

完成此操作后,operator!不再需要重载,因为转换后布尔值可以取反。