我在operator==
为我的堆栈类编写函数时遇到了很多麻烦,我似乎无法理解逻辑。目前我有:
template<class myType>
bool linkedStack<myType>::operator==(const linkedStack<myType>& op)
{
linkedStack<myType> stackA, stackB;
bool res = false;
stackA.copyStack(this);
stackB.copyStack(op);
while(!stackA.isStackEmpty() && !stackB.isStackEmpty())
{
if (stackA.peek() == stackB.peek()) {
stackA.pop();
stackB.pop();
if (stackA.isStackEmpty() && stackB.isStackEmpty())
res = true;
} else
res = false;
}
return res;
}
问题是我无法将当前类堆栈复制到 stackA 中,因为this
它是一个 const 指针,并且我的 copyStack 会喷出编译器错误。必须有一个更简单的解决方案,有人可以指出我正确的方向吗?谢谢!
编辑:我的代码的修改部分:
template<class myType>
bool linkedStack<myType>::operator==(const linkedStack<myType>& op)
{
nodeType<myType> *current, *opcurrent;
current = stackTop;
opcurrent = op.stackTop;
while(current != NULL && opcurrent != NULL)
{
if (current->info != opcurrent->info) {
return false;
}
current = current->link;
opcurrent = opcurrent->link;
}
return true;
}