2016-04-04 12 views
-3

プライベートであり、カプセル化されたオブジェクト(getterとsettersを持つ)で配列をソートする際に問題があります。私自身のバブルソート関数を使用しています。カプセル化された関数を使用する警告

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が私のクラスの宣言にgettersとsetterを使用するように警告するということです。

getterとsetterを使用する方が良い理由は何ですか?私の悪い申し訳ありません

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

関連する問題