我有问题用私有的对象排序数组并且它们被封装(有getter和setter)。我正在使用我自己的冒泡排序函数。
void BubbleSort(apvector <int> &num)
{
int i, j, flag = 1;
int temp;
int numLength = num.length( );
for(i = 1; (i <= numLength) && flag; i++)
{
flag = 0;
for (j=0; j < (numLength -1); j++)
{
if (num[j+1] > num[j])
{
temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
flag = 1;
}
}
}
问题在于eclipse IDE向我发出警告,要求在我的班级声明中使用getter和setter。
为什么最好使用getter和setter?
P.S 抱歉我的问题不好(这是我的第一个问题之一):)
答案 0 :(得分:1)
您需要在将该数组作为参数发送到该函数之前创建该数组。或者你可以在函数内部创建它,但我认为这不是你想要去的地方。
Student* students = new Student[5];
在调用你的函数之前,你应该把它写在某个地方。然后,您的函数签名必须转到以下内容:
void bubbleSort(Student* student)
合乎逻辑的做法是在这里使用std::vector
,它比你想要的方法要好得多。请参阅:http://en.cppreference.com/w/cpp/container/vector
答案 1 :(得分:1)
void bubbleSort(Student* student, int size)
{ [...] }
变量student
是指向数组的指针
您还必须指定数组的 大小 。
要打电话:
Student* myClass=new Student[5];
bubbleSort(myClass, 5); // Pass the array, and the size of the array both.