运算符重载c ++

问题描述 投票:0回答:2

我需要重载该运算符(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);
c++ overloading operator-keyword
2个回答
3
投票

在此if语句的条件下


-2
投票

只需更改

© www.soinside.com 2019 - 2024. All rights reserved.