重载求反运算符很简单:
bool MyClass::operator!() const
{
//return whatever comparison needs to be done
}
然后我可以写:
MyClass a;
if(!a)
{
//Do something
}
但是我希望能够写:
if(a)
{
//Do something
}
我该怎么做?
答案 0 :(得分:1)
if语句中的表达式将转换为bool。因此,您需要做的是使您的班级可转换为bool。这可以通过定义转换运算符来实现:
struct MyClass {
explicit operator bool() const {
return true;
}
};
完成此操作后,operator!
不再需要重载,因为转换后布尔值可以取反。