[英]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.