0

I declared the int id in the private, part of my class.

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

This code is in my file to display and call for functions that are in the array, and to sort the int id.

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

This is in a seperate file where i put my functions, i am able to display the contents of the array, if i student[i].put(cout) the data. I am not sure how to pass in an integer that would be in the provate part of my class

        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例如,当您不使用默认值时,这是第三个参数operator<

于 2012-05-01T10:42:28.607 回答
0

sort_array 函数不得位于其他文件中,而应位于 Student 类声明的 .cpp 中。

而且您不必将 id 作为参数传递,因为您可以访问(即使它是私有的)它,因为您将在该类的范围内。

于 2012-05-01T10:42:37.103 回答
0

sort_array不属于student class!对于student.

使用 C++ 标准库的函数对students 集合进行排序当然是可能的。idstd::sort()

您可以为您的班级定义一个小于 ,因此:operatorstudent

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

由于它是 的成员,class因此可以访问其所有数据。

它必须是public:,那么std::sort()函数将能够使用它来对student. 基于id. 如果要比较 的多个属性class,一定要实现严格的弱排序

于 2012-05-01T10:50:10.927 回答