0
在我擁有的隊列類中,我的dequeue
函數似乎存在問題。作爲位置類的一部分的我的dequeue
函數未返回已排入列表的正確值。出隊功能不輸出正確的值
已排隊的值是位置對象,是2,1和-1,但是當我出隊該對象時,我得到2,506216和-1;當我將*pos
ponter分配給一個對象時,我剩下了默認值;當我檢查ptr
值時,排隊函數似乎正常工作,它們是正確的。
//position constructor
front = back = &header;
struct Posnode
{
Position *pos;
Posnode *next;
};
class Position
private:
Posnode *front,*back,header;
void Position::dequeue(Position&p)
{
Posnode *ptr=front->next;
front->next = ptr->next;
p = *ptr->pos;
p.geta();//checking for values but am left with the default
if (back == ptr)
{
back = front;
}
delete ptr;
}
v
oid Position::enqueue(Position n) //assigning Position object to end of queue
{
Posnode *ptr = new Posnode;
ptr-> pos = &n;
back->next = ptr;
back = ptr;
return;
}
位置拷貝intial(5); copy = intial;
if (copy.ismovelegal(posmoves, r))
{
copy.makemove(posmoves, r);
if (intial.solved(copy))
{
cin.get();
}
else
{
p.enqueue(copy);
}
}
copy.free();//clearing object private memebers
}
intial.free();
p.dequeue(o);//copy that was previous enqued is not enqued
o.geta();
這功課嗎?如果是,請使用作業標籤 – SpeedBirdNine 2012-03-01 07:10:30
如果您可以發佈仍然存在問題的最小工作程序,將會更容易找到錯誤。您發佈的代碼無法編譯,並且錯誤可能在您刪除的部分中。 – 2012-03-01 07:10:47
你會編輯你的文章,以便你的代碼示例是真正編譯的東西嗎? – hvd 2012-03-01 07:10:51