クラスの循環キューを実装する必要がありました。プログラムをテストすると、プログラムは適切にエンキューおよびデキューされます。しかし、新しいオブジェクトを作成してそれを別のオブジェクトと等しく設定すると、すべてが正しく出力されますが、最後にクラッシュしてエラーが発生します。
Expression: _BLOCK_TYPE_IS_VALID(pHead -> nBlockUse)
デバッガーを実行しましたが、問題はデキュー機能の行にあると表示されます。これがその関数です。
void CQUEUE::Dequeue()
{
if(Isempty())
{
cout << "Queue is empty, nothing to delete." << endl;
return;
}
if((!Isempty()) && (front == back)) //When there is only 1 item in the queue
{ // front and back will point to the same node
delete front; //but it wont be null because of that 1 item
front = back = 0;
return;
}
qnode *p = front;
front = front -> next;
delete p;//<----------DEBUGGER POINTS HERE**************
front -> prev = back;
return;
}
私が言ったように、私が新しいオブジェクトを作成してこれを行うまで、プログラムは正常に動作します
CQUEUE j = k;//Any Enqueues and Dequeues after this work, but it crashes
これが問題である場合のコピーコンストラクターですか?
CQUEUE::CQUEUE(CQUEUE & original)//Will not compile if I put Const
{ //in the parameter for some reason
front = back = 0; //So I took it out
(*this) = original;
front -> prev = back;
back -> next = front;
}