C++ 比较堆栈
我有一个项目,比较两个堆栈的内容,我有这个功能的问题。我相信我已经正确地完成了程序的其余部分。我在B.myCharacters.empty()(表达式必须具有类类型)和B==B.myCharacters(没有与这些操作数匹配的运算符“==”)上遇到错误C++ 比较堆栈,c++,string,char,stack,C++,String,Char,Stack,我有一个项目,比较两个堆栈的内容,我有这个功能的问题。我相信我已经正确地完成了程序的其余部分。我在B.myCharacters.empty()(表达式必须具有类类型)和B==B.myCharacters(没有与这些操作数匹配的运算符“==”)上遇到错误 bool CharStack::IsEqual(CharStack&B) { if(B.empty()) { cout假设您的CharStack在内部将字符保存在std::string中,即 class CharStack { std::
bool CharStack::IsEqual(CharStack&B)
{
if(B.empty())
{
cout假设您的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
的各种用法,假设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
的各种用法。如果不知道CharStack
是什么,没有人能帮上忙。欢迎这样做!不幸的是,除非您发布所使用的代码,特别是CharStack
的定义,否则我们帮不了您多少忙。请参阅了解所需的内容。请注意,这会使s说两个空堆栈相等是有意义的。在您的代码段中,它们不相等。您会得到一个关于缺少运算符的错误,因为您没有定义如何比较两个不同的东西(B
和B.mycharacters
)。也就是说,您需要定义CharStack::operator==(const t和otherCharacters)const
。(还请注意,您可能不希望在实际解决方案中使用此运算符。这只是您当前解决方案不需要抱怨缺少此运算符的运算符。)这次可能不是你的问题,但迟早这个问题中描述的错误会让你:请提供。在不知道什么是CharStack
的情况下,没有人能帮助你。欢迎这样做!不幸的是,我们帮不了你很多,除非你发布所使用的代码,特别是CharStack
的定义。请参阅ed.还请注意,说两个空堆栈相等是有道理的。在您的代码段中,它们不相等。您会得到一个关于缺少运算符的错误,因为您没有定义如何比较两个不同的东西(B
和B.mycharacters
)。也就是说,您需要定义CharStack::operator==(const T&otherCharacters)const
(请注意,您可能不希望在实际解决方案中使用此运算符。这正是当前解决方案不需要抱怨缺少此运算符的运算符。)这次可能不是你的问题,但迟早这个问题中描述的错误会让你明白:在尝试比较堆栈之前,我还必须确保堆栈不是空的。你是什么意思?如果堆栈为空,应该如何比较它们?另请参阅我的编辑。如果堆栈为空,则不应该进行比较。应该重新编辑urn false,如果其中一个或两个堆栈都为空,则显示错误消息。这几乎像是比较它们的先决条件,但这是在函数内部完成的。没有任何意义。在尝试比较它们之前,我还必须确保堆栈不为空。你是什么意思?如果为空,应如何比较它们?参见al所以我的编辑。如果它们是空的,它不应该比较它们。如果其中一个或两个堆栈都是空的,它应该返回false,然后显示错误消息。这几乎像是比较它们的先决条件,但这是在函数内部完成的。没有意义。