在此if语句的条件下
我需要重载该运算符(mainMenu是称为'Menu'的类类型:]]
if (mainMenu) { cout << "The mainMenu is valid and usable." << endl; }
我尝试了这个,但是没有用:
bool operator!(const Menu& lobj);
我需要重载该运算符(mainMenu是称为'Menu'的类类型):if(mainMenu){cout <
在此if语句的条件下
if (mainMenu)
未使用逻辑求反运算符
!
。
相反,您可以写例如
if ( !!mainMenu )
但是最好像这样声明一个显式转换运算符>
explicit operator bool() const;
在这种情况下,您可以写
if (mainMenu)
这里是一个演示程序,显示了这些运算符之间的差异。
#include <iostream> struct A { bool operator !() const { return false; } explicit operator bool() const { return true; } }; int main() { if ( !!A() ) std::cout << "Hello\n"; if ( A() ) std::cout << "World!\n"; return 0; }
程序输出为
Hello World!
只需更改
bool operator!(const Menu& obj);
由
bool operator!=(const Menu& obja, const Menu& objb);
Operator!=需要2个参数进行比较
但是在这种情况下,我认为您应该使用
==运算符,应该是
bool operator==(const Menu& obja, const Menu& objb);
在此if语句的条件下
只需更改