0
私が持っているキュークラス内に私のdequeue
関数に問題があるようです。ポジションクラスの一部である私のdequeue
関数は、リストにエンキューされた正しい値を返していません。デキュー機能が適切な値を出力しない
エンキューされた値は、位置オブジェクトで、2,1と-1ですが、そのオブジェクトをデキューすると2,506216と-1が得られます。 *pos
ポンターをオブジェクトに割り当てると、デフォルト値が残っています; 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
を使用してください。まだ問題を示している作業中の最小限のプログラムを投稿することができれば、エラーを見つけやすくなります。投稿したコードはコンパイルされず、削除した部分にエラーがある可能性があります。 –
コードサンプルが実際にコンパイルされるように投稿を編集しますか? – hvd