繁体   English   中英

C ++中的布尔错误

[英]Bool error in c++

我正在尝试在用户定义的类中创建一个方法,该方法将比较两个长度,如果隐式参数大于显式参数,则返回true,但它一直在说我不能使用>符号,并且不确定为什么。 任何帮助将不胜感激。

bool isGreaterThan(English_length&L)
{
if (isGreaterThan(L)>L)
    return true;
else
    return false;

}

看起来English_length没有重载的<运算符。 有关更多信息,请参见此处

即使解决了问题,由于无限递归,您的代码也会导致堆栈溢出。

我假设isGreaterThan是成员函数,而您想要的是:

bool isGreaterThan(English_length&L)
{
if ( *this > L)
    return true;
else
    return false;

}

将调用的对象与作为参数传递的对象进行比较。 或更简单:

bool isGreaterThan(English_length&L)
{
    return *this > L
}

您正在将isGreaterThan(布尔值)的结果与English_length对象进行比较。

您可能想要的是这些方面的东西:

    class English_length {
    private:
        size_t length;

    public:
        bool isGreaterThan(const English_length& other) const {
            return length > other.length;
        }
    };

习惯上,您将需要重载operator>,而不是定义isGreaterThan函数:

    class English_length {
       ...

       bool operator>(const English_length& other) const { 
           return length > other.length; 
       }           
    }

首先,您编写了一个永远不会结束的递归函数

bool isGreaterThan(English_length&L)
{
if (isGreaterThan(L)>L)
    return true;
else
    return false;

}

isGreaterThan称自己为在线

if (isGreaterThan(L)>L)

但是,编译器不允许运行此无限函数,因为它发现一个错误,即没有定义的operator >将ty [e bool (调用isGreaterThan(L)的返回类型)的对象与一个类型的对象进行比较英文长度

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM