STLの文字列の比較ファンクタ
こんにちはすべて!私は次の関数子があります: これは、することになっている厳しい弱い順序は、それがこの(1行のみ可能)デバッグの目的に長いです。 私は、STLのコンパレータ関として、この関を使用しています::セットを表します。問題されて、それだけで挿入最初の要素を返します。関数コンパレータ出力をすることにより追加コンソール、私は時間が学んだことすべて、 それ自体のファイル名を実際にある比較。 他の関連する行があります: と 編集には:を呼び出すコード。addFile()のです: all_requestsのリストは、どこで、要求はそのようなことをされたクラス: 私は、何が起こっているように私のhypotesisを提供できるが、私は実際にはないアイデアを持ってください。任意のポインタを事前に感謝します。 |
4 Replies
1)
そこには、機能的に言えば投稿したコードでは何も間違っている。ここでは完全なテストプログラムとは - 私だけの空欄に、まったくあなたのコードを変更しないいただいている。 私はこの出力を得る: そのセットは、すべての3つのことに格納され、あなたの比較では、ログ終了まで注意してください賢明な振る舞いを示しています。 編集: あなたのバグは、これらの行です: あなたは、ローカルオブジェクトのアドレスを取っている。ループは、オブジェクトが破棄され、次のオブジェクトが同じ空間に割り当てられている回避するたびに。従って、唯一の最終的なオブジェクトはまだループの最後に存在し、あなたが同じオブジェクトに複数のポインタを追加しました。ループ外では、全てのベットがオフのため、現在のオブジェクトのいずれも存在している。 いずれかの新しい(ように私のテストでは、各SimulatedDiskFileを割り当てるが、その後は、ときにそれらを削除する)を把握する、または他のポインタを使用していないよ、すべての(はるかに簡単それはあなたの問題の制約を適合する場合)。 |
2)
そしてここで問題があります: あなたはすぐに破棄される変数へのポインタを追加している。あなたが動的に自衛隊のオブジェクトを作成する必要があります。 |
3)
) temp_fileがスコープ外に瞬間次の繰り返しのwhileループに行くと思います。を挿入するコードを変更する必要があります。ヒープ上に作成SimulatedDiskFileオブジェクトとそれ以外のオブジェクトがある場合、小さいし、ストアセット内の値で押してください。 |
4)
同意を@エリカー。すべてのよさそうだ。あなたはall_requests内部を見ていたか?正常に動作しているかもしれないすべてのファイル名が同じと他のすべてのですか? (ちょうど大声でここに考えて) |