スタック クラスの関数を書くのに苦労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;
}