我有一个项目来比较两个堆栈的内容,我遇到了这个函数的问题。我相信我已经正确完成了其余的程序。我在B.myCharacters.empty()上遇到错误(表达式必须有类型)和B == B.myCharacters(没有运算符" =="匹配这些操作数)。
#wp-megamenu-primary_navigation{
clear: both;
}
非常感谢任何帮助。
这是标题和驱动程序。它们是由老师为这个项目提供的,即使有更好的方法,也不允许我改变它们。
#wp-megamenu-primary_navigation {
padding-right: 15px !important;
padding-left: 15px !important;
display: inline-block;
}
驱动程序
bool CharStack::IsEqual(CharStack & B)
{
if (B.empty())
{
cout << "Stack is empty" << endl;
return false;
}
else if (B.myCharacters.empty())
{
cout << "Stack is empty" << endl;
return false;
}
else if (B == B.myCharacters)
return true;
}
答案 0 :(得分:2)
假设您的CharStack
在内部将字符保留在std::string
,即
class CharStack
{
std::string myCharacters; // internal data
public:
bool IsEqual(CharStack const&) const;
/* ... */
};
如果两个堆栈相同,那么和IsEqual()
应该返回,那么实现就是
bool CharStack::IsEqual(CharStack const&other) const
{
return myCharacters == other.myCharacters;
}
这将空堆栈和非空堆栈比较为不相等,但两个空堆栈相等,这可能是正确的行为。如果你想要两个空堆栈不相等,你可以
bool CharStack::IsEqualNonEmpty(CharStack const&other) const
{
return !myCharacters.empty() && myCharacters == other.myCharacters;
}
还请注意关键字const
的各种用法。