2016-04-04 2 views
-3

У меня проблема с сортировкой массива с частными объектами, и они инкапсулированы (имеют геттер и сеттеры). Я использую свою собственную функцию сортировки пузырьков.Предупреждение для использования инкапсулированных функций

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 отправляет мне предупреждение использовать геттеры и сеттер в объявлении моего класса.

Почему лучше использовать геттеры и сеттеры?

P.S Извините за мой плохой задаваемый вопрос (это был один из первых моих вопросов) :)

+1

Я думаю, что вы не совсем понимаете точку подписи функции. Он определяет, как должна вызываться функция. Это связано с ошибкой, которую вы сделали раньше: «как определить массив в функции» - Нет, вы определяете массив _outside_ 'bubbleSort'. И желательно без 'new []' – MSalters

ответ

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. 
+0

*** Показать код *** Нам требуется [** MVCE **] (http://stackoverflow.com/help/mcve) – abelenky

+0

Спасибо, что я новичок. –

+0

Даже будучи новичком, вы можете четко задать вопрос и опубликовать достаточно кода, чтобы четко показать, с чем вы столкнулись. – abelenky

1

Вам нужно создать указанный массив перед отправкой его в качестве параметра функции. В качестве альтернативы вы можете создать его внутри функции, но я думаю, что вы не хотите этого делать.

Student* students = new Student[5]; 

Вы должны были написать это где-нибудь перед вызовом своей функции. Тогда ваша функция подписи придется обратиться к следующему:

void bubbleSort(Student* student) 

Логическая вещь, чтобы сделать было бы использовать std::vector здесь, хотя, это гораздо лучше, чем метод вы идете. См: http://en.cppreference.com/w/cpp/container/vector