警告使用封装函数

时间:2016-04-04 13:13:05

标签: c++ arrays oop

我有问题用私有的对象排序数组并且它们被封装(有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 抱歉我的问题不好(这是我的第一个问题之一):)

2 个答案:

答案 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.