0

クラスの一部であるプライベートで int id を宣言しました。

                    private:
                      int id,age;
                      float gpa;
                      string last,first;

このコードは、配列内にある関数を表示して呼び出し、int id をソートするためにファイルに含まれています。

        student[i].sort_array(student[i].id,cap);
        i++;
        cout << i;

これは、関数を配置する別のファイルにあります。データを Student[i].put(cout) にすると、配列の内容を表示できます。クラスの証明部分にある整数を渡す方法がわかりません

        void student::sort_array(int student[i].get(id),int n)
        {

            int j,temp;
            for(j=0;j<n-1;j++)
            { 
         //if out of position switch the out of align number
            if(student[j]<student[j+1])
            {
            temp =  student[j];
            student[j] = student[j+1];
            student[j+1] = temp;
            }
         }
4

3 に答える 3

3

通常の方法では、bool student::compareAges(Student const& otherStudent)メソッドを用意し、それを追加の引数として比較関数に渡します。std::sortたとえば、デフォルトを使用していない場合は、3 番目の引数です。operator<

于 2012-05-01T10:42:28.607 に答える
0

sort_arrayに属していないstudent class!また、のインスタンスに対して「intidをソートする」ことも意味がありませんstudent

C++標準ライブラリの関数を使用してsstudentのコレクションをソートすることは確かに可能です。 idstd::sort()

クラスの小なり operatorを定義できます。したがって、次のようになります。student

bool student::operator <(student const& rhs) const
{
    return id < rhs.id;
}

のメンバーであるため、classすべてのデータにアクセスできます。

でなければなりません。そうすればpublic:std::sort()関数はこれを使用して、の標準C ++コンテナ(または配列)をソートできますstudent。に基づいていidます。の複数の属性を比較する場合は、必ず厳密な弱順序classを実装してください。

于 2012-05-01T10:50:10.927 に答える
0

sort_array 関数は、別のファイルではなく、Student クラス宣言の .cpp にある必要があります。

また、そのクラスのスコープ内にいるため、(プライベートであっても) アクセスできるため、id をパラメーターとして渡す必要はありません。

于 2012-05-01T10:42:37.103 に答える