0

受講したい大学のコースをまとめたC++のプログラムがあります。これは、コンソールから入力(コースコード、説明など)を取得し、各コースをメジャー別に整理してから、すべてを適切にフォーマットされた読みやすいHTMLファイルに出力することで実現します。後で、私は多くの研究でリストを間引くことを計画しています。

各コースをオブジェクトとして実装します。これは、情報の入力が完了するとリストに追加されます。すべての情報が完成したら、list::sort各コースをメジャーとコードで並べ替える必要があります(たとえば、CSE380はCSE110の後にあり、両方ともECO 108の前にあります)。後のフォーマットは簡単です。

ソートするには、単純な関数を実装する必要があります。これは、技術的には有効ですが、Courseクラスに「<」演算子がないために奇妙なエラーが発生するためです。私の関数は次のようになります。

bool courseCompare(Course course1, Course course2) { return course1.getCode() < course2.getCode(); }

ここで、getCode()は3文字/桁の形式でコースコードを保持する小さな文字列を返します(「AMS401」など)。これは、明らかにアルファベット順を容易にするためのものです。

私はそのようにsortメソッドを呼び出します。

all_the_courses.sort(courseCompare);

リストはどこall_the_coursesにありますか。

ただし、std :: listを使用すると、プログラムが停止します。クラッシュせず、出力もありません。何かを入力してEnterキーを押しても、応答しません。何か案は?

4

2 に答える 2

2

パラメータを参照ではなく値で比較関数に渡しているため、コピーコンストラクタにエラーがある可能性があります。比較関数を作成する通常の方法は、オブジェクトを完全にコピーしないようにするconst参照を使用することです。

bool courseCompare(const Course &course1, const Course &course2)
于 2012-01-01T02:28:40.167 に答える
1

OK、私はこれを完全に間違った方法で行っていたようです。私の問題は完全に異なるものであることがわかりました(ファイルストリームを含む)。私はそれが何であるかを理解する必要がありますが、それはソートではありません。単純なcoutもの(私が以前に実際に使用すべきだったもの)はそれを明らかにします。すみません、みなさん!

于 2012-01-02T05:37:41.410 に答える